Android

From NixOS Wiki
Revision as of 10:10, 1 August 2018 by imported>Nadrieril (The example shell.nix file was missing some things when I tried to build a ROM myself. I added a link to a gist with enhanced shell.nix and detailed instructions)

Connecting Android device

$ nix-shell -p androidenv.platformTools
% 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

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