Android: Difference between revisions
imported>Ajs124 m add nixdroid |
imported>Mickours update for last stable |
||
Line 1: | Line 1: | ||
=== Connecting Android device === | === Connecting Android device === | ||
<syntaxhighlight lang=console> | <syntaxhighlight lang=console> | ||
$ nix-shell -p androidenv.platformTools | $ # For nixos < 19.03 | ||
$ # nix-shell -p androidenv.platformTools | |||
$ nix-shell -p androidenv.androidPkgs_9_0.platform-tools | |||
% adb connect 192.168.1.10 | % adb connect 192.168.1.10 | ||
% adb shell | % adb shell |
Revision as of 20:02, 16 July 2019
Connecting Android device
$ # For nixos < 19.03
$ # nix-shell -p androidenv.platformTools
$ nix-shell -p androidenv.androidPkgs_9_0.platform-tools
% adb connect 192.168.1.10
% adb shell
Add these lines to your configuration.nix
for enabling adb in NixOS for unprivileged users
{
...
programs.adb.enable = true;
users.users.<your-user>.extraGroups = ["adbusers"];
}
Transfering files from/to an Android device
There are two main methods for newer devices:
adb push
andadb pull
: see above.- via MTP, see the corresponding page
Building Android apps using Nix
Some software (for example Tinc VPN) have Android client which can be built together with the NixOS version, in the same derivation, sharing the same configuration options.
...
Android Studio on NixOS
$ nix-shell -p android-studio --run android-studio
Building Android on NixOS
It's possible to use nix-shell with buildFHSUserEnv to set up an environment in which it's viable to build Android without huge amounts of editing. This is an example shell.nix file.
{ pkgs ? import <nixpkgs> {} }:
let fhs = pkgs.buildFHSUserEnv {
name = "android-env";
targetPkgs = pkgs: with pkgs;
[ git
gitRepo
gnupg
python2
curl
procps
openssl
gnumake
nettools
androidenv.platformTools
jdk
schedtool
utillinux
m4
gperf
perl
libxml2
zip
unzip
bison
flex
lzop
];
multiPkgs = pkgs: with pkgs;
[ zlib
];
runScript = "bash";
profile = ''
export USE_CCACHE=1
export ANDROID_JAVA_HOME=${pkgs.jdk.home}
'';
};
in pkgs.stdenv.mkDerivation {
name = "android-env-shell";
nativeBuildInputs = [ fhs ];
shellHook = "exec android-env";
}
More complete example with instructions, for LineageOS
There is also NixDroid, to build Android completely with nix. It is however not very well documented and requires patches to nix, etc.
Using the nixpkgs androidenv
User Sander van der Burg created two awesome blog posts as well as a number of test cases usable as examples on how to use the nixpkgs androidenv and the emulator provideded: