Android

From NixOS Wiki
Revision as of 20:02, 16 July 2019 by imported>Mickours (update for last stable)

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:

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";

}

Source

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:

  1. Building Android applications with the Nix package manager
  2. Reproducing Android app deployments (or playing Angry Birds on NixOS)
  3. A set of androidenv test cases