androidndk: add v9d
I also updated the buildApp expression so it can build ndk based apps, when setting useNDK to true.
This commit is contained in:
parent
4160e65931
commit
8267fa4694
31
pkgs/development/mobile/androidenv/androidndk.nix
Normal file
31
pkgs/development/mobile/androidenv/androidndk.nix
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{ stdenv, fetchurl, zlib, ncurses
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = "android-ndk-r9d";
|
||||||
|
|
||||||
|
src = if stdenv.system == "i686-linux"
|
||||||
|
then fetchurl {
|
||||||
|
url = "http://dl.google.com/android/ndk/${name}-linux-x86.tar.bz2";
|
||||||
|
md5 = "6c1d7d99f55f0c17ecbcf81ba0eb201f";
|
||||||
|
}
|
||||||
|
else if stdenv.system == "x86_64-linux" then fetchurl {
|
||||||
|
url = "http://dl.google.com/android/ndk/${name}-linux-x86_64.tar.bz2";
|
||||||
|
md5 = "c7c775ab3342965408d20fd18e71aa45";
|
||||||
|
}
|
||||||
|
else throw "platform not ${stdenv.system} supported!";
|
||||||
|
|
||||||
|
phases = "installPhase";
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
set -x
|
||||||
|
mkdir -pv $out
|
||||||
|
tar xf $src
|
||||||
|
mv */* $out
|
||||||
|
find $out \( \
|
||||||
|
\( -type f -a -name "*.so*" \) -o \
|
||||||
|
\( -type f -a -perm +0100 \) \
|
||||||
|
\) -exec patchelf --set-interpreter ${stdenv.gcc.libc}/lib/ld-*so.? \
|
||||||
|
--set-rpath ${zlib}/lib:${ncurses}/lib {} \;
|
||||||
|
'';
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
{ stdenv, androidsdk, jdk, ant }:
|
{ stdenv, androidsdk, jdk, ant, androidndk, gnumake, gawk, file, which }:
|
||||||
args@{ name, src, platformVersions ? [ "8" ], useGoogleAPIs ? false, antFlags ? ""
|
args@{ name, src, platformVersions ? [ "8" ], useGoogleAPIs ? false, antFlags ? ""
|
||||||
, release ? false, keyStore ? null, keyAlias ? null, keyStorePassword ? null, keyAliasPassword ? null
|
, release ? false, keyStore ? null, keyAlias ? null, keyStorePassword ? null, keyAliasPassword ? null
|
||||||
, ...
|
, useNDK ? false, ...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
assert release -> keyStore != null && keyAlias != null && keyStorePassword != null && keyAliasPassword != null;
|
assert release -> keyStore != null && keyAlias != null && keyStorePassword != null && keyAliasPassword != null;
|
||||||
@ -18,11 +18,12 @@ let
|
|||||||
in
|
in
|
||||||
stdenv.mkDerivation ({
|
stdenv.mkDerivation ({
|
||||||
name = stdenv.lib.replaceChars [" "] [""] name;
|
name = stdenv.lib.replaceChars [" "] [""] name;
|
||||||
|
|
||||||
ANDROID_HOME = "${androidsdkComposition}/libexec/android-sdk-${platformName}";
|
ANDROID_HOME = "${androidsdkComposition}/libexec/android-sdk-${platformName}";
|
||||||
|
|
||||||
buildInputs = [ jdk ant ];
|
buildInputs = [ jdk ant ] ++
|
||||||
|
stdenv.lib.optional useNDK [ androidndk gnumake gawk file which ];
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
${stdenv.lib.optionalString release ''
|
${stdenv.lib.optionalString release ''
|
||||||
|
|
||||||
@ -33,11 +34,16 @@ stdenv.mkDerivation ({
|
|||||||
echo "key.alias.password=${keyAliasPassword}"
|
echo "key.alias.password=${keyAliasPassword}"
|
||||||
) >> ant.properties
|
) >> ant.properties
|
||||||
''}
|
''}
|
||||||
|
|
||||||
export ANDROID_SDK_HOME=`pwd` # Key files cannot be stored in the user's home directory. This overrides it.
|
export ANDROID_SDK_HOME=`pwd` # Key files cannot be stored in the user's home directory. This overrides it.
|
||||||
|
${if useNDK then ''
|
||||||
|
export GNUMAKE=${gnumake}/bin/make
|
||||||
|
export NDK_HOST_AWK=${gawk}/bin/gawk
|
||||||
|
${androidndk}/ndk-build
|
||||||
|
'' else ""}
|
||||||
ant ${antFlags} ${if release then "release" else "debug"}
|
ant ${antFlags} ${if release then "release" else "debug"}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out
|
mkdir -p $out
|
||||||
mv bin/*-${if release then "release" else "debug"}.apk $out
|
mv bin/*-${if release then "release" else "debug"}.apk $out
|
||||||
|
@ -81,10 +81,14 @@ rec {
|
|||||||
abiVersions = [ "armeabi-v7a" "x86" ];
|
abiVersions = [ "armeabi-v7a" "x86" ];
|
||||||
useGoogleAPIs = true;
|
useGoogleAPIs = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
androidndk = import ./androidndk.nix {
|
||||||
|
inherit (pkgs) stdenv fetchurl zlib ncurses;
|
||||||
|
};
|
||||||
|
|
||||||
buildApp = import ./build-app.nix {
|
buildApp = import ./build-app.nix {
|
||||||
inherit (pkgs) stdenv jdk ant;
|
inherit (pkgs) stdenv jdk ant gnumake gawk file which;
|
||||||
inherit androidsdk;
|
inherit androidsdk androidndk;
|
||||||
};
|
};
|
||||||
|
|
||||||
emulateApp = import ./emulate-app.nix {
|
emulateApp = import ./emulate-app.nix {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user