diff --git a/pkgs/development/mobile/androidenv/androidsdk.nix b/pkgs/development/mobile/androidenv/androidsdk.nix
index 98bf7ff2ee9..34cc07adf35 100644
--- a/pkgs/development/mobile/androidenv/androidsdk.nix
+++ b/pkgs/development/mobile/androidenv/androidsdk.nix
@@ -5,7 +5,7 @@
, libX11, libXext, libXrender, libxcb, libXau, libXdmcp, mesa
, freetype, fontconfig, gtk, atk
}:
-{platformVersions, useGoogleAPIs}:
+{platformVersions, abiVersions, useGoogleAPIs}:
stdenv.mkDerivation {
name = "android-sdk-22.05";
@@ -148,19 +148,21 @@ stdenv.mkDerivation {
mkdir -p system-images
cd system-images
- ${stdenv.lib.concatMapStrings (platformVersion:
- if (builtins.hasAttr ("sysimg_"+platformVersion) sysimages) then
- let
- sysimg = builtins.getAttr ("sysimg_"+platformVersion) sysimages;
- in
- ''
- mkdir -p android-${platformVersion}
- cd android-${platformVersion}
- ln -s ${sysimg}/*
- cd ..
- ''
- else ""
- ) platformVersions}
+ ${stdenv.lib.concatMapStrings (abiVersion:
+ stdenv.lib.concatMapStrings (platformVersion:
+ if (builtins.hasAttr ("sysimg_" + abiVersion + "_" + platformVersion) sysimages) then
+ let
+ sysimg = builtins.getAttr ("sysimg_" + abiVersion + "_" + platformVersion) sysimages;
+ in
+ ''
+ mkdir -p android-${platformVersion}
+ cd android-${platformVersion}
+ ln -s ${sysimg}/*
+ cd ..
+ ''
+ else ""
+ ) platformVersions
+ ) abiVersions}
# Create wrappers to the most important tools and platform tools so that we can run them if the SDK is in our PATH
diff --git a/pkgs/development/mobile/androidenv/build-app.nix b/pkgs/development/mobile/androidenv/build-app.nix
index 8b770ede0fc..b5aa82cced7 100644
--- a/pkgs/development/mobile/androidenv/build-app.nix
+++ b/pkgs/development/mobile/androidenv/build-app.nix
@@ -1,5 +1,5 @@
{ stdenv, androidsdk, jdk, ant }:
-{ name, src, platformVersions ? [ "8" ], useGoogleAPIs ? false
+{ name, src, platformVersions ? [ "8" ], abiVersions ? [ "armeabi-v7a" ], useGoogleAPIs ? false
, release ? false, keyStore ? null, keyAlias ? null, keyStorePassword ? null, keyAliasPassword ? null
}:
@@ -10,7 +10,9 @@ let
else if stdenv.system == "x86_64-darwin" then "macosx"
else throw "Platform: ${stdenv.system} is not supported!";
- androidsdkComposition = androidsdk { inherit platformVersions useGoogleAPIs; };
+ androidsdkComposition = androidsdk {
+ inherit platformVersions abiVersions useGoogleAPIs;
+ };
in
stdenv.mkDerivation {
name = stdenv.lib.replaceChars [" "] [""] name;
diff --git a/pkgs/development/mobile/androidenv/default.nix b/pkgs/development/mobile/androidenv/default.nix
index 2191a0953bf..d7d8d92a66e 100644
--- a/pkgs/development/mobile/androidenv/default.nix
+++ b/pkgs/development/mobile/androidenv/default.nix
@@ -53,6 +53,7 @@ rec {
androidsdk_4_1 = androidsdk {
platformVersions = [ "16" ];
+ abiVersions = [ "armeabi-v7a" ];
useGoogleAPIs = true;
};
diff --git a/pkgs/development/mobile/androidenv/emulate-app.nix b/pkgs/development/mobile/androidenv/emulate-app.nix
index 3cbe5723806..97d73bffded 100644
--- a/pkgs/development/mobile/androidenv/emulate-app.nix
+++ b/pkgs/development/mobile/androidenv/emulate-app.nix
@@ -1,8 +1,12 @@
{stdenv, androidsdk}:
-{name, app, platformVersion ? "8", useGoogleAPIs ? false, package, activity}:
+{name, app, platformVersion ? "8", abiVersion ? "armeabi-v7a", useGoogleAPIs ? false, enableGPU ? false, package, activity}:
let
- androidsdkComposition = androidsdk { inherit useGoogleAPIs; platformVersions = [ platformVersion ]; };
+ androidsdkComposition = androidsdk {
+ inherit useGoogleAPIs;
+ platformVersions = [ platformVersion ];
+ abiVersions = [ abiVersion ];
+ };
in
stdenv.mkDerivation {
inherit name;
@@ -48,6 +52,11 @@ stdenv.mkDerivation {
# Create a virtual android device
${androidsdkComposition}/libexec/android-sdk-*/tools/android create avd -n device -t ${if useGoogleAPIs then "'Google Inc.:Google APIs:"+platformVersion+"'" else "android-"+platformVersion}
+ # Enable GPU acceleration
+ ${stdenv.lib.optionalString enableGPU ''
+ echo "hw.gpu.enabled=yes" >> $ANDROID_SDK_HOME/.android/avd/device.avd/config.ini
+ ''}
+
# Launch the emulator
${androidsdkComposition}/libexec/android-sdk-*/tools/emulator -avd device -no-boot-anim -port $port &
diff --git a/pkgs/development/mobile/androidenv/generate-sysimages-others.xsl b/pkgs/development/mobile/androidenv/generate-sysimages-others.xsl
new file mode 100644
index 00000000000..31ab72add36
--- /dev/null
+++ b/pkgs/development/mobile/androidenv/generate-sysimages-others.xsl
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+ sysimg__ = buildSystemImage {
+ name = "-";
+ src = fetchurl {
+ url = https://dl-ssl.google.com/android/repository/sys-img//;
+ sha1 = "";
+ };
+ };
+
+
+
diff --git a/pkgs/development/mobile/androidenv/generate-sysimages.sh b/pkgs/development/mobile/androidenv/generate-sysimages.sh
index ae4b4f35a37..90b1e04c229 100755
--- a/pkgs/development/mobile/androidenv/generate-sysimages.sh
+++ b/pkgs/development/mobile/androidenv/generate-sysimages.sh
@@ -1,3 +1,26 @@
#!/bin/sh -e
-xsltproc generate-sysimages.xsl repository-8.xml > sysimages.nix
+cat > sysimages.nix << "EOF"
+{stdenv, fetchurl, unzip}:
+
+let
+ buildSystemImage = args:
+ stdenv.mkDerivation (args // {
+ buildInputs = [ unzip ];
+ buildCommand = ''
+ mkdir -p $out
+ cd $out
+ unzip $src
+ '';
+ });
+in
+{
+EOF
+
+xsltproc generate-sysimages.xsl repository-8.xml >> sysimages.nix
+xsltproc --stringparam abi x86 generate-sysimages-others.xsl sys-img-x86.xml >> sysimages.nix
+xsltproc --stringparam abi mips generate-sysimages-others.xsl sys-img-mips.xml >> sysimages.nix
+
+cat >> sysimages.nix << "EOF"
+}
+EOF
diff --git a/pkgs/development/mobile/androidenv/generate-sysimages.xsl b/pkgs/development/mobile/androidenv/generate-sysimages.xsl
index 6036595eb9a..be9947d536a 100644
--- a/pkgs/development/mobile/androidenv/generate-sysimages.xsl
+++ b/pkgs/development/mobile/androidenv/generate-sysimages.xsl
@@ -7,22 +7,8 @@
-{stdenv, fetchurl, unzip}:
-
-let
- buildSystemImage = args:
- stdenv.mkDerivation (args // {
- buildInputs = [ unzip ];
- buildCommand = ''
- mkdir -p $out
- cd $out
- unzip $src
- '';
- });
-in
-{
- sysimg_ = buildSystemImage {
+ sysimg__ = buildSystemImage {
name = "-";
src = fetchurl {
url = https://dl-ssl.google.com/android/repository/;
@@ -30,7 +16,5 @@ in
};
};
-}
-
diff --git a/pkgs/development/mobile/androidenv/sys-img-mips.xml b/pkgs/development/mobile/androidenv/sys-img-mips.xml
new file mode 100644
index 00000000000..c839d283f4e
--- /dev/null
+++ b/pkgs/development/mobile/androidenv/sys-img-mips.xml
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
+ 1
+ Android 4.0.4
+ 15
+ mips
+
+
+
+ 117503178
+ a753bb4a6783124dad726c500ce9aec9d2c1b2d9
+ sysimg_mips-15_r01.zip
+
+
+
+
+
+ 4
+
+ Android 4.1.2
+ 16
+ mips
+
+
+
+ 122482530
+ 67943c54fb3943943ffeb05fdd39c0b753681f6e
+ sysimg_mips-16_r04.zip
+
+
+
+
+
+ 1
+
+ Android 4.2.1
+ 17
+ mips
+
+
+
+ 131781761
+ f0c6e153bd584c29e51b5c9723cfbf30f996a05d
+ sysimg_mips-17_r01.zip
+
+
+
+
+
diff --git a/pkgs/development/mobile/androidenv/sys-img-x86.xml b/pkgs/development/mobile/androidenv/sys-img-x86.xml
new file mode 100644
index 00000000000..f0e8347f6db
--- /dev/null
+++ b/pkgs/development/mobile/androidenv/sys-img-x86.xml
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+
+ Android SDK Platform 2.3.7
+ 2
+ 10
+ x86
+
+
+
+ 55463895
+ 34e2436f69606cdfe35d3ef9112f0c64e3ff021d
+ sysimg_x86-10_r02.zip
+
+
+
+
+
+ Android SDK Platform 4.0.4
+ 1
+ 15
+ x86
+
+
+
+ 112619605
+ d540325952e0f097509622b9e685737584b83e40
+ sysimg_x86-15_r01.zip
+
+
+
+
+
+ Android SDK Platform 4.1.1
+ 1
+ 16
+ x86
+
+
+
+ 131840348
+ 9d35bcaa4f9b40443941f32b8a50337f413c021a
+ sysimg_x86-16_r01.zip
+
+
+
+
+
+ Android SDK Platform 4.2
+ 1
+ 17
+ x86
+
+
+
+ 138799122
+ ddb3313e8dcd07926003f7b828eafea1115ea35b
+ sysimg_x86-17_r01.zip
+
+
+
+
+
diff --git a/pkgs/development/mobile/androidenv/sysimages.nix b/pkgs/development/mobile/androidenv/sysimages.nix
index 71a97126935..bc78ea11e6f 100644
--- a/pkgs/development/mobile/androidenv/sysimages.nix
+++ b/pkgs/development/mobile/androidenv/sysimages.nix
@@ -1,9 +1,8 @@
-
{stdenv, fetchurl, unzip}:
let
buildSystemImage = args:
- stdenv.mkDerivation (args // {
+ stdenv.mkDerivation (args // {
buildInputs = [ unzip ];
buildCommand = ''
mkdir -p $out
@@ -13,8 +12,8 @@ let
});
in
{
-
- sysimg_14 = buildSystemImage {
+
+ sysimg_armeabi-v7a_14 = buildSystemImage {
name = "armeabi-v7a-14";
src = fetchurl {
url = https://dl-ssl.google.com/android/repository/sysimg_armv7a-14_r02.zip;
@@ -22,7 +21,7 @@ in
};
};
- sysimg_15 = buildSystemImage {
+ sysimg_armeabi-v7a_15 = buildSystemImage {
name = "armeabi-v7a-15";
src = fetchurl {
url = https://dl-ssl.google.com/android/repository/sysimg_armv7a-15_r02.zip;
@@ -30,7 +29,7 @@ in
};
};
- sysimg_16 = buildSystemImage {
+ sysimg_armeabi-v7a_16 = buildSystemImage {
name = "armeabi-v7a-16";
src = fetchurl {
url = https://dl-ssl.google.com/android/repository/sysimg_armv7a-16_r03.zip;
@@ -38,7 +37,7 @@ in
};
};
- sysimg_17 = buildSystemImage {
+ sysimg_armeabi-v7a_17 = buildSystemImage {
name = "armeabi-v7a-17";
src = fetchurl {
url = https://dl-ssl.google.com/android/repository/sysimg_armv7a-17_r02.zip;
@@ -46,7 +45,7 @@ in
};
};
- sysimg_18 = buildSystemImage {
+ sysimg_armeabi-v7a_18 = buildSystemImage {
name = "armeabi-v7a-18";
src = fetchurl {
url = https://dl-ssl.google.com/android/repository/sysimg_armv7a-18_r01.zip;
@@ -54,5 +53,59 @@ in
};
};
-}
-
\ No newline at end of file
+ sysimg_x86_10 = buildSystemImage {
+ name = "x86-10";
+ src = fetchurl {
+ url = https://dl-ssl.google.com/android/repository/sys-img/x86/sysimg_x86-10_r02.zip;
+ sha1 = "34e2436f69606cdfe35d3ef9112f0c64e3ff021d";
+ };
+ };
+
+ sysimg_x86_15 = buildSystemImage {
+ name = "x86-15";
+ src = fetchurl {
+ url = https://dl-ssl.google.com/android/repository/sys-img/x86/sysimg_x86-15_r01.zip;
+ sha1 = "d540325952e0f097509622b9e685737584b83e40";
+ };
+ };
+
+ sysimg_x86_16 = buildSystemImage {
+ name = "x86-16";
+ src = fetchurl {
+ url = https://dl-ssl.google.com/android/repository/sys-img/x86/sysimg_x86-16_r01.zip;
+ sha1 = "9d35bcaa4f9b40443941f32b8a50337f413c021a";
+ };
+ };
+
+ sysimg_x86_17 = buildSystemImage {
+ name = "x86-17";
+ src = fetchurl {
+ url = https://dl-ssl.google.com/android/repository/sys-img/x86/sysimg_x86-17_r01.zip;
+ sha1 = "ddb3313e8dcd07926003f7b828eafea1115ea35b";
+ };
+ };
+
+ sysimg_mips_15 = buildSystemImage {
+ name = "mips-15";
+ src = fetchurl {
+ url = https://dl-ssl.google.com/android/repository/sys-img/mips/sysimg_mips-15_r01.zip;
+ sha1 = "a753bb4a6783124dad726c500ce9aec9d2c1b2d9";
+ };
+ };
+
+ sysimg_mips_16 = buildSystemImage {
+ name = "mips-16";
+ src = fetchurl {
+ url = https://dl-ssl.google.com/android/repository/sys-img/mips/sysimg_mips-16_r04.zip;
+ sha1 = "67943c54fb3943943ffeb05fdd39c0b753681f6e";
+ };
+ };
+
+ sysimg_mips_17 = buildSystemImage {
+ name = "mips-17";
+ src = fetchurl {
+ url = https://dl-ssl.google.com/android/repository/sys-img/mips/sysimg_mips-17_r01.zip;
+ sha1 = "f0c6e153bd584c29e51b5c9723cfbf30f996a05d";
+ };
+ };
+ }