about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/languages-frameworks/android.section.md6
-rw-r--r--pkgs/development/mobile/androidenv/README.md9
-rw-r--r--pkgs/development/mobile/androidenv/build-tools.nix6
-rw-r--r--pkgs/development/mobile/androidenv/cmdline-tools.nix39
-rw-r--r--pkgs/development/mobile/androidenv/compose-android-packages.nix75
-rw-r--r--pkgs/development/mobile/androidenv/default.nix2
-rw-r--r--pkgs/development/mobile/androidenv/emulator.nix11
-rw-r--r--pkgs/development/mobile/androidenv/examples/shell.nix58
-rw-r--r--pkgs/development/mobile/androidenv/patcher.nix9
-rw-r--r--pkgs/development/mobile/androidenv/platform-tools.nix1
-rw-r--r--pkgs/development/mobile/androidenv/test-suite.nix16
-rw-r--r--pkgs/development/mobile/androidenv/tools.nix64
-rw-r--r--pkgs/development/mobile/androidenv/tools/25.nix62
-rw-r--r--pkgs/development/mobile/androidenv/tools/26.nix45
14 files changed, 234 insertions, 169 deletions
diff --git a/doc/languages-frameworks/android.section.md b/doc/languages-frameworks/android.section.md
index 15b8d3839b19..6f9717ca09cc 100644
--- a/doc/languages-frameworks/android.section.md
+++ b/doc/languages-frameworks/android.section.md
@@ -13,6 +13,7 @@ with import <nixpkgs> {};
 
 let
   androidComposition = androidenv.composeAndroidPackages {
+    cmdLineToolsVersion = "8.0";
     toolsVersion = "26.1.1";
     platformToolsVersion = "30.0.5";
     buildToolsVersions = [ "30.0.3" ];
@@ -42,7 +43,10 @@ exceptions are the tools, platform-tools and build-tools sub packages.
 
 The following parameters are supported:
 
-* `toolsVersion`, specifies the version of the tools package to use
+* `cmdLineToolsVersion `, specifies the version of the `cmdline-tools` package to use
+* `toolsVersion`, specifies the version of the `tools` package. Notice `tools` is
+  obsolete, and currently only `26.1.1` is available, so there's not a lot of
+  options here, however, you can set it as `null` if you don't want it.
 * `platformsToolsVersion` specifies the version of the `platform-tools` plugin
 * `buildToolsVersions` specifies the versions of the `build-tools` plugins to
   use.
diff --git a/pkgs/development/mobile/androidenv/README.md b/pkgs/development/mobile/androidenv/README.md
index 159265abb480..04cb157dba56 100644
--- a/pkgs/development/mobile/androidenv/README.md
+++ b/pkgs/development/mobile/androidenv/README.md
@@ -4,3 +4,12 @@
 2. `./mkrepo.sh`
 3. Check the `repo.json` diff for new stable versions of `tools`, `platform-tools`, `build-tools`, `emulator` and/or `ndk`
 4. Update the relevant argument defaults in `compose-android-packages.nix`
+
+# How to run tests
+You may need to make yourself familiar with [tests](https://nixos.org/manual/nixpkgs/stable/#var-meta-tests), and [Writing larger package tests](https://nixos.org/manual/nixpkgs/stable/#ssec-package-tests-writing) in the Manual, then run tests locally with:
+
+```shell
+$ export NIXPKGS_ALLOW_UNFREE=1
+$ cd path/to/nixpkgs
+$ nix-build -A androidenv.test-suite.tests
+```
diff --git a/pkgs/development/mobile/androidenv/build-tools.nix b/pkgs/development/mobile/androidenv/build-tools.nix
index 2b094df03455..018298d322e8 100644
--- a/pkgs/development/mobile/androidenv/build-tools.nix
+++ b/pkgs/development/mobile/androidenv/build-tools.nix
@@ -1,4 +1,4 @@
-{deployAndroidPackage, lib, package, os, autoPatchelfHook, makeWrapper, pkgs, pkgsi686Linux}:
+{deployAndroidPackage, lib, package, os, autoPatchelfHook, makeWrapper, pkgs, pkgsi686Linux, postInstall}:
 
 deployAndroidPackage {
   inherit package os;
@@ -19,6 +19,8 @@ deployAndroidPackage {
       wrapProgram $PWD/mainDexClasses \
         --prefix PATH : ${pkgs.jdk8}/bin
     ''}
-  '';
+
+    cd $out/libexec/android-sdk
+  '' + postInstall;
   noAuditTmpdir = true; # The checker script gets confused by the build-tools path that is incorrectly identified as a reference to /build
 }
diff --git a/pkgs/development/mobile/androidenv/cmdline-tools.nix b/pkgs/development/mobile/androidenv/cmdline-tools.nix
new file mode 100644
index 000000000000..b3ca1c171b65
--- /dev/null
+++ b/pkgs/development/mobile/androidenv/cmdline-tools.nix
@@ -0,0 +1,39 @@
+{deployAndroidPackage, lib, package, autoPatchelfHook, makeWrapper, os, pkgs, pkgsi686Linux, stdenv, cmdLineToolsVersion, postInstall}:
+
+deployAndroidPackage {
+  name = "androidsdk";
+  inherit package os;
+  nativeBuildInputs = [ makeWrapper ]
+    ++ lib.optionals stdenv.isLinux [ autoPatchelfHook ];
+
+  patchInstructions = ''
+    ${lib.optionalString (os == "linux") ''
+      # Auto patch all binaries
+      autoPatchelf .
+    ''}
+
+    # Strip double dots from the root path
+    export ANDROID_SDK_ROOT="$out/libexec/android-sdk"
+
+    # Wrap all scripts that require JAVA_HOME
+    find $ANDROID_SDK_ROOT/cmdline-tools/${cmdLineToolsVersion}/bin -maxdepth 1 -type f -executable | while read program; do
+      if grep -q "JAVA_HOME" $program; then
+        wrapProgram $program  --prefix PATH : ${pkgs.jdk11}/bin \
+          --prefix ANDROID_SDK_ROOT : $ANDROID_SDK_ROOT
+      fi
+    done
+
+    # Wrap sdkmanager script
+    wrapProgram $ANDROID_SDK_ROOT/cmdline-tools/${cmdLineToolsVersion}/bin/sdkmanager \
+      --prefix PATH : ${lib.makeBinPath [ pkgs.jdk11 ]} \
+      --add-flags "--sdk_root=$ANDROID_SDK_ROOT"
+
+    # Patch all script shebangs
+    patchShebangs $ANDROID_SDK_ROOT/cmdline-tools/${cmdLineToolsVersion}/bin
+
+    cd $ANDROID_SDK_ROOT
+    ${postInstall}
+  '';
+
+  meta.license = lib.licenses.unfree;
+}
diff --git a/pkgs/development/mobile/androidenv/compose-android-packages.nix b/pkgs/development/mobile/androidenv/compose-android-packages.nix
index a862aef1f3c1..75f393b3f9e2 100644
--- a/pkgs/development/mobile/androidenv/compose-android-packages.nix
+++ b/pkgs/development/mobile/androidenv/compose-android-packages.nix
@@ -2,7 +2,8 @@
 , licenseAccepted ? false
 }:
 
-{ toolsVersion ? "26.1.1"
+{ cmdLineToolsVersion ? "8.0"
+, toolsVersion ? "26.1.1"
 , platformToolsVersion ? "33.0.3"
 , buildToolsVersions ? [ "33.0.1" ]
 , includeEmulator ? false
@@ -132,16 +133,40 @@ rec {
     package = packages.platform-tools.${platformToolsVersion};
   };
 
+  tools = callPackage ./tools.nix {
+    inherit deployAndroidPackage os;
+    package = packages.tools.${toolsVersion};
+
+    postInstall = ''
+      ${linkPlugin { name = "platform-tools"; plugin = platform-tools; }}
+      ${linkPlugin { name = "patcher"; plugin = patcher; }}
+      ${linkPlugin { name = "emulator"; plugin = emulator; }}
+    '';
+  };
+
+  patcher = callPackage ./patcher.nix {
+    inherit deployAndroidPackage os;
+    package = packages.patcher."1";
+  };
+
   build-tools = map (version:
     callPackage ./build-tools.nix {
       inherit deployAndroidPackage os;
       package = packages.build-tools.${version};
+
+      postInstall = ''
+        ${linkPlugin { name = "tools"; plugin = tools; check = toolsVersion != null; }}
+      '';
     }
   ) buildToolsVersions;
 
   emulator = callPackage ./emulator.nix {
     inherit deployAndroidPackage os;
     package = packages.emulator.${emulatorVersion};
+
+    postInstall = ''
+      ${linkSystemImages { images = system-images; check = includeSystemImages; }}
+    '';
   };
 
   platforms = map (version:
@@ -238,9 +263,19 @@ rec {
   # Function that automatically links a plugin for which only one version exists
   linkPlugin = {name, plugin, check ? true}:
     lib.optionalString check ''
-      ln -s ${plugin}/libexec/android-sdk/* ${name}
+      ln -s ${plugin}/libexec/android-sdk/${name} ${name}
     '';
 
+  linkSystemImages = { images, check }: lib.optionalString check ''
+    mkdir -p system-images
+    ${lib.concatMapStrings (system-image: ''
+      apiVersion=$(basename $(echo ${system-image}/libexec/android-sdk/system-images/*))
+      type=$(basename $(echo ${system-image}/libexec/android-sdk/system-images/*/*))
+      mkdir -p system-images/$apiVersion/$type
+      ln -s ${system-image}/libexec/android-sdk/system-images/$apiVersion/$type/* system-images/$apiVersion/$type
+    '') images}
+  '';
+
   # Links all plugins related to a requested platform
   linkPlatformPlugins = {name, plugins, check}:
     lib.optionalString check ''
@@ -260,12 +295,16 @@ rec {
     ${lib.concatMapStringsSep "\n" (str: "  - ${str}") licenseNames}
 
     by setting nixpkgs config option 'android_sdk.accept_license = true;'.
-  '' else callPackage ./tools.nix {
-    inherit deployAndroidPackage packages toolsVersion os;
+  '' else callPackage ./cmdline-tools.nix {
+    inherit deployAndroidPackage os cmdLineToolsVersion;
+
+    package = packages.cmdline-tools.${cmdLineToolsVersion};
 
     postInstall = ''
       # Symlink all requested plugins
       ${linkPlugin { name = "platform-tools"; plugin = platform-tools; }}
+      ${linkPlugin { name = "tools"; plugin = tools; check = toolsVersion != null; }}
+      ${linkPlugin { name = "patcher"; plugin = patcher; }}
       ${linkPlugins { name = "build-tools"; plugins = build-tools; }}
       ${linkPlugin { name = "emulator"; plugin = emulator; check = includeEmulator; }}
       ${linkPlugins { name = "platforms"; plugins = platforms; }}
@@ -273,17 +312,7 @@ rec {
       ${linkPlugins { name = "cmake"; plugins = cmake; }}
       ${linkNdkPlugins { name = "ndk-bundle"; rootName = "ndk"; plugins = ndk-bundles; }}
       ${linkNdkPlugin { name = "ndk-bundle"; plugin = ndk-bundle; check = includeNDK; }}
-
-      ${lib.optionalString includeSystemImages ''
-        mkdir -p system-images
-        ${lib.concatMapStrings (system-image: ''
-          apiVersion=$(basename $(echo ${system-image}/libexec/android-sdk/system-images/*))
-          type=$(basename $(echo ${system-image}/libexec/android-sdk/system-images/*/*))
-          mkdir -p system-images/$apiVersion/$type
-          ln -s ${system-image}/libexec/android-sdk/system-images/$apiVersion/$type/* system-images/$apiVersion/$type
-        '') system-images}
-      ''}
-
+      ${linkSystemImages { images = system-images; check = includeSystemImages; }}
       ${linkPlatformPlugins { name = "add-ons"; plugins = google-apis; check = useGoogleAPIs; }}
       ${linkPlatformPlugins { name = "add-ons"; plugins = google-apis; check = useGoogleTVAddOns; }}
 
@@ -304,27 +333,19 @@ rec {
 
       # Expose common executables in bin/
       mkdir -p $out/bin
-      find $PWD/tools -not -path '*/\.*' -type f -executable -mindepth 1 -maxdepth 1 | while read i
-      do
+
+      for i in ${platform-tools}/bin/*; do
           ln -s $i $out/bin
       done
 
-      find $PWD/tools/bin -not -path '*/\.*' -type f -executable -mindepth 1 -maxdepth 1 | while read i
-      do
+      for i in ${emulator}/bin/*; do
           ln -s $i $out/bin
       done
 
-      for i in ${platform-tools}/bin/*
-      do
+      find $ANDROID_SDK_ROOT/cmdline-tools/${cmdLineToolsVersion}/bin -type f -executable | while read i; do
           ln -s $i $out/bin
       done
 
-      # the emulator auto-linked from platform-tools does not find its local qemu, while this one does
-      ${lib.optionalString includeEmulator ''
-        rm $out/bin/emulator
-        ln -s $out/libexec/android-sdk/emulator/emulator $out/bin
-      ''}
-
       # Write licenses
       mkdir -p licenses
       ${lib.concatMapStrings (licenseName:
diff --git a/pkgs/development/mobile/androidenv/default.nix b/pkgs/development/mobile/androidenv/default.nix
index 90064becfb5b..9bd9fb9a543b 100644
--- a/pkgs/development/mobile/androidenv/default.nix
+++ b/pkgs/development/mobile/androidenv/default.nix
@@ -19,4 +19,6 @@ rec {
     platformVersions = [ "28" ];
     abiVersions = [ "x86" "x86_64"];
   };
+
+  test-suite = pkgs.callPackage ./test-suite.nix {};
 }
diff --git a/pkgs/development/mobile/androidenv/emulator.nix b/pkgs/development/mobile/androidenv/emulator.nix
index 0a680fd360f5..273cc3d8a8a5 100644
--- a/pkgs/development/mobile/androidenv/emulator.nix
+++ b/pkgs/development/mobile/androidenv/emulator.nix
@@ -1,4 +1,4 @@
-{ deployAndroidPackage, lib, package, os, autoPatchelfHook, makeWrapper, pkgs, pkgsi686Linux }:
+{ deployAndroidPackage, lib, package, os, autoPatchelfHook, makeWrapper, pkgs, pkgsi686Linux, postInstall }:
 
 deployAndroidPackage {
   inherit package os;
@@ -47,6 +47,15 @@ deployAndroidPackage {
       ]} \
       --set QT_XKB_CONFIG_ROOT ${pkgs.xkeyboard_config}/share/X11/xkb \
       --set QTCOMPOSE ${pkgs.xorg.libX11.out}/share/X11/locale
+
+    mkdir -p $out/bin
+    cd $out/bin
+    find $out/libexec/android-sdk/emulator -type f -executable -mindepth 1 -maxdepth 1 | while read i; do
+      ln -s $i
+    done
+
+    cd $out/libexec/android-sdk
+    ${postInstall}
   '';
   dontMoveLib64 = true;
 }
diff --git a/pkgs/development/mobile/androidenv/examples/shell.nix b/pkgs/development/mobile/androidenv/examples/shell.nix
index 36c3d4da0c8e..8c51ba09e53c 100644
--- a/pkgs/development/mobile/androidenv/examples/shell.nix
+++ b/pkgs/development/mobile/androidenv/examples/shell.nix
@@ -25,7 +25,7 @@ let
   # versions may be used in multiple places in this Nix expression.
   android = {
     versions = {
-      tools = "26.1.1";
+      cmdLineToolsVersion = "8.0";
       platformTools = "33.0.3";
       buildTools = "30.0.3";
       ndk = [
@@ -60,7 +60,7 @@ let
   };
 
   androidComposition = androidEnv.composeAndroidPackages {
-    toolsVersion = android.versions.tools;
+    cmdLineToolsVersion = android.versions.cmdLineToolsVersion;
     platformToolsVersion = android.versions.platformTools;
     buildToolsVersions = [android.versions.buildTools];
     platformVersions = android.platforms;
@@ -138,11 +138,55 @@ pkgs.mkShell rec {
 
     # Write out local.properties for Android Studio.
     cat <<EOF > local.properties
-# This file was automatically generated by nix-shell.
-sdk.dir=$ANDROID_SDK_ROOT
-ndk.dir=$ANDROID_NDK_ROOT
-cmake.dir=$cmake_root
-EOF
+    # This file was automatically generated by nix-shell.
+    sdk.dir=$ANDROID_SDK_ROOT
+    ndk.dir=$ANDROID_NDK_ROOT
+    cmake.dir=$cmake_root
+    EOF
   '';
+
+  passthru.tests = {
+    sdkmanager-licenses-test = pkgs.runCommand "sdkmanager-licenses-test" {
+      buildInputs = [ androidSdk jdk ];
+    } ''
+      if [[ ! "$(sdkmanager --licenses)" =~ "All SDK package licenses accepted." ]]; then
+        echo "At least one of SDK package licenses are not accepted."
+        exit 1
+      fi
+      touch $out
+    '';
+
+    sdkmanager-packages-test = pkgs.runCommand "sdkmanager-packages-test" {
+      buildInputs = [ androidSdk jdk ];
+    } ''
+      output="$(sdkmanager --list)"
+      installed_packages_section=$(echo "''${output%%Available Packages*}" | awk 'NR>4 {print $1}')
+
+      packages=(
+        "build-tools;30.0.3" "ndk-bundle" "platform-tools" \
+        "platforms;android-23" "platforms;android-24" "platforms;android-25" "platforms;android-26" \
+        "platforms;android-27" "platforms;android-28" "platforms;android-29" "platforms;android-30" \
+        "platforms;android-31" "platforms;android-32" "platforms;android-33" \
+        "sources;android-23" "sources;android-24" "sources;android-25" "sources;android-26" \
+        "sources;android-27" "sources;android-28" "sources;android-29" "sources;android-30" \
+        "sources;android-31" "sources;android-32" "sources;android-33" \
+        "system-images;android-28;google_apis_playstore;arm64-v8a" \
+        "system-images;android-29;google_apis_playstore;arm64-v8a" \
+        "system-images;android-30;google_apis_playstore;arm64-v8a" \
+        "system-images;android-31;google_apis_playstore;arm64-v8a" \
+        "system-images;android-32;google_apis_playstore;arm64-v8a" \
+        "system-images;android-33;google_apis_playstore;arm64-v8a"
+      )
+
+      for package in "''${packages[@]}"; do
+        if [[ ! $installed_packages_section =~ "$package" ]]; then
+          echo "$package package was not installed."
+          exit 1
+        fi
+      done
+
+      touch "$out"
+    '';
+  };
 }
 
diff --git a/pkgs/development/mobile/androidenv/patcher.nix b/pkgs/development/mobile/androidenv/patcher.nix
new file mode 100644
index 000000000000..9fd112063cb8
--- /dev/null
+++ b/pkgs/development/mobile/androidenv/patcher.nix
@@ -0,0 +1,9 @@
+{deployAndroidPackage, lib, package, os, autoPatchelfHook, pkgs, stdenv}:
+
+deployAndroidPackage {
+  inherit package os;
+  nativeBuildInputs = lib.optionals stdenv.isLinux [ autoPatchelfHook ];
+  patchInstructions = lib.optionalString (os == "linux") ''
+    autoPatchelf $packageBaseDir/bin
+  '';
+}
diff --git a/pkgs/development/mobile/androidenv/platform-tools.nix b/pkgs/development/mobile/androidenv/platform-tools.nix
index 49bc8da92a8b..eed3b896bfca 100644
--- a/pkgs/development/mobile/androidenv/platform-tools.nix
+++ b/pkgs/development/mobile/androidenv/platform-tools.nix
@@ -4,6 +4,7 @@ deployAndroidPackage {
   inherit package os;
   nativeBuildInputs = lib.optionals (os == "linux") [ autoPatchelfHook ];
   buildInputs = lib.optionals (os == "linux") [ pkgs.glibc pkgs.zlib pkgs.ncurses5 ];
+
   patchInstructions = lib.optionalString (os == "linux") ''
     addAutoPatchelfSearchPath $packageBaseDir/lib64
     autoPatchelf --no-recurse $packageBaseDir/lib64
diff --git a/pkgs/development/mobile/androidenv/test-suite.nix b/pkgs/development/mobile/androidenv/test-suite.nix
new file mode 100644
index 000000000000..d063b73ccb40
--- /dev/null
+++ b/pkgs/development/mobile/androidenv/test-suite.nix
@@ -0,0 +1,16 @@
+{ stdenv, callPackage }:
+let
+  examples-shell = callPackage ./examples/shell.nix {};
+in
+stdenv.mkDerivation {
+  name = "androidenv-test-suite";
+
+  src = ./.;
+
+  dontConfigure = true;
+  dontBuild = true;
+
+  passthru.tests = { } // examples-shell.passthru.tests;
+
+  meta.timeout = 60;
+}
diff --git a/pkgs/development/mobile/androidenv/tools.nix b/pkgs/development/mobile/androidenv/tools.nix
index 36e7e52b80a5..091b94489479 100644
--- a/pkgs/development/mobile/androidenv/tools.nix
+++ b/pkgs/development/mobile/androidenv/tools.nix
@@ -1,26 +1,42 @@
-{deployAndroidPackage, requireFile, lib, packages, toolsVersion, os, callPackage, postInstall ? ""}:
+{deployAndroidPackage, lib, package, autoPatchelfHook, makeWrapper, os, pkgs, pkgsi686Linux, postInstall}:
 
-if toolsVersion == "26.0.1" then callPackage ./tools/26.nix {
-  inherit deployAndroidPackage lib os postInstall;
-  package = {
-    name = "tools";
-    path = "tools";
-    revision = "26.0.1";
-    archives = {
-      linux = requireFile {
-        url = "https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip";
-        sha256 = "185yq7qwxflw24ccm5d6zziwlc9pxmsm3f54pm9p7xm0ik724kj4";
-      };
-      macosx = requireFile {
-        url = "https://dl.google.com/android/repository/sdk-tools-darwin-3859397.zip";
-        sha256 = "1ycx9gzdaqaw6n19yvxjawywacavn1jc6sadlz5qikhgfr57b0aa";
-      };
-    };
-  };
-} else if toolsVersion == "26.1.1" then callPackage ./tools/26.nix {
-  inherit deployAndroidPackage lib os postInstall;
-  package = packages.tools.${toolsVersion};
-} else callPackage ./tools/25.nix {
-  inherit deployAndroidPackage lib os postInstall;
-  package = packages.tools.${toolsVersion};
+deployAndroidPackage {
+  name = "androidsdk";
+  inherit os package;
+  nativeBuildInputs = [ makeWrapper ]
+    ++ lib.optionals (os == "linux") [ autoPatchelfHook ];
+  buildInputs = lib.optional (os == "linux") (
+      (with pkgs; [ glibc freetype fontconfig fontconfig.lib])
+      ++ (with pkgs.xorg; [ libX11 libXrender libXext ])
+      ++ (with pkgsi686Linux; [ glibc xorg.libX11 xorg.libXrender xorg.libXext fontconfig.lib freetype zlib ])
+    );
+
+  patchInstructions = ''
+    ${lib.optionalString (os == "linux") ''
+      # Auto patch all binaries
+      autoPatchelf .
+    ''}
+
+    # Wrap all scripts that require JAVA_HOME
+    for i in bin; do
+      find $i -maxdepth 1 -type f -executable | while read program; do
+        if grep -q "JAVA_HOME" $program; then
+          wrapProgram $PWD/$program --prefix PATH : ${pkgs.jdk8}/bin
+        fi
+      done
+    done
+
+    # Wrap monitor script
+    wrapProgram $PWD/monitor \
+      --prefix PATH : ${pkgs.jdk8}/bin \
+      --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath (with pkgs; [ xorg.libX11 xorg.libXtst ])}
+
+    # Patch all script shebangs
+    patchShebangs .
+
+    cd $out/libexec/android-sdk
+    ${postInstall}
+  '';
+
+  meta.license = lib.licenses.unfree;
 }
diff --git a/pkgs/development/mobile/androidenv/tools/25.nix b/pkgs/development/mobile/androidenv/tools/25.nix
deleted file mode 100644
index 85a114fbc29c..000000000000
--- a/pkgs/development/mobile/androidenv/tools/25.nix
+++ /dev/null
@@ -1,62 +0,0 @@
-{deployAndroidPackage, lib, package, autoPatchelfHook, makeWrapper, os, pkgs, pkgsi686Linux, postInstall ? ""}:
-
-deployAndroidPackage {
-  name = "androidsdk";
-  nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
-  buildInputs = lib.optionals (os == "linux") [ pkgs.glibc pkgs.xorg.libX11 pkgs.xorg.libXext pkgs.xorg.libXdamage pkgs.xorg.libxcb pkgs.xorg.libXfixes pkgs.xorg.libXrender pkgs.fontconfig.lib pkgs.freetype pkgs.libGL pkgs.zlib pkgs.ncurses5 pkgs.libpulseaudio pkgsi686Linux.glibc pkgsi686Linux.xorg.libX11 pkgsi686Linux.xorg.libXrender pkgsi686Linux.fontconfig pkgsi686Linux.freetype pkgsi686Linux.zlib ];
-  inherit package os;
-
-  patchInstructions = ''
-    ${lib.optionalString (os == "linux") ''
-      # Auto patch all binaries
-      addAutoPatchelfSearchPath $PWD/lib64
-      addAutoPatchelfSearchPath $PWD/lib64/libstdc++
-      addAutoPatchelfSearchPath $PWD/lib64/qt/lib
-      addAutoPatchelfSearchPath $PWD/lib
-      addAutoPatchelfSearchPath $PWD/lib/libstdc++
-      autoPatchelf .
-    ''}
-
-    # Wrap all scripts that require JAVA_HOME
-    for i in bin
-    do
-        find $i -maxdepth 1 -type f -executable | while read program
-        do
-            if grep -q "JAVA_HOME" $program
-            then
-                wrapProgram $PWD/$program --prefix PATH : ${pkgs.jdk8}/bin
-            fi
-        done
-    done
-
-    # Wrap programs that require java
-    for i in draw9patch jobb lint screenshot2
-    do
-        wrapProgram $PWD/$i \
-          --prefix PATH : ${pkgs.jdk8}/bin
-    done
-
-    # Wrap programs that require java and SWT
-    for i in android ddms hierarchyviewer monitor monkeyrunner traceview uiautomatorviewer
-    do
-        wrapProgram $PWD/$i \
-          --prefix PATH : ${pkgs.jdk8}/bin \
-          --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ pkgs.xorg.libX11 pkgs.xorg.libXtst ]}
-    done
-
-    ${lib.optionalString (os == "linux") ''
-      wrapProgram $PWD/emulator \
-        --prefix PATH : ${pkgs.file}/bin:${pkgs.glxinfo}/bin:${pkgs.pciutils}/bin \
-        --set QT_XKB_CONFIG_ROOT ${pkgs.xkeyboard_config}/share/X11/xkb \
-        --set QTCOMPOSE ${pkgs.xorg.libX11.out}/share/X11/locale
-    ''}
-
-    # Patch all script shebangs
-    patchShebangs .
-
-    cd ..
-    ${postInstall}
-  '';
-
-  meta.license = lib.licenses.unfree;
-}
diff --git a/pkgs/development/mobile/androidenv/tools/26.nix b/pkgs/development/mobile/androidenv/tools/26.nix
deleted file mode 100644
index 527d36027183..000000000000
--- a/pkgs/development/mobile/androidenv/tools/26.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-{deployAndroidPackage, lib, package, autoPatchelfHook, makeWrapper, os, pkgs, pkgsi686Linux, postInstall ? ""}:
-
-deployAndroidPackage {
-  name = "androidsdk";
-  inherit os package;
-  nativeBuildInputs = [ makeWrapper ]
-    ++ lib.optionals (os == "linux") [ autoPatchelfHook ];
-  buildInputs = lib.optional (os == "linux") (
-      (with pkgs; [ glibc freetype fontconfig fontconfig.lib])
-      ++ (with pkgs.xorg; [ libX11 libXrender libXext ])
-      ++ (with pkgsi686Linux; [ glibc xorg.libX11 xorg.libXrender xorg.libXext fontconfig.lib freetype zlib ])
-    );
-
-  patchInstructions = ''
-    ${lib.optionalString (os == "linux") ''
-      # Auto patch all binaries
-      autoPatchelf .
-    ''}
-
-    # Wrap all scripts that require JAVA_HOME
-    for i in bin
-    do
-        find $i -maxdepth 1 -type f -executable | while read program
-        do
-            if grep -q "JAVA_HOME" $program
-            then
-                wrapProgram $PWD/$program --prefix PATH : ${pkgs.jdk8}/bin
-            fi
-        done
-    done
-
-    # Wrap monitor script
-    wrapProgram $PWD/monitor \
-      --prefix PATH : ${pkgs.jdk8}/bin \
-      --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ pkgs.xorg.libX11 pkgs.xorg.libXtst ]}
-
-    # Patch all script shebangs
-    patchShebangs .
-
-    cd ..
-    ${postInstall}
-  '';
-
-  meta.license = lib.licenses.unfree;
-}