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