about summary refs log tree commit diff
path: root/pkgs/development/mobile/androidenv/build-app.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/mobile/androidenv/build-app.nix')
-rw-r--r--pkgs/development/mobile/androidenv/build-app.nix20
1 files changed, 13 insertions, 7 deletions
diff --git a/pkgs/development/mobile/androidenv/build-app.nix b/pkgs/development/mobile/androidenv/build-app.nix
index db7067c989c5..ca00e78b2cb8 100644
--- a/pkgs/development/mobile/androidenv/build-app.nix
+++ b/pkgs/development/mobile/androidenv/build-app.nix
@@ -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 ? ""
 , release ? false, keyStore ? null, keyAlias ? null, keyStorePassword ? null, keyAliasPassword ? null
-, ...
+, useNDK ? false, ...
 }:
 
 assert release -> keyStore != null && keyAlias != null && keyStorePassword != null && keyAliasPassword != null;
@@ -18,11 +18,12 @@ let
 in
 stdenv.mkDerivation ({
   name = stdenv.lib.replaceChars [" "] [""] name;
-  
+
   ANDROID_HOME = "${androidsdkComposition}/libexec/android-sdk-${platformName}";
 
-  buildInputs = [ jdk ant ];
-  
+  buildInputs = [ jdk ant ] ++
+    stdenv.lib.optional useNDK [ androidndk gnumake gawk file which ];
+
   buildPhase = ''
     ${stdenv.lib.optionalString release ''
     
@@ -33,11 +34,16 @@ stdenv.mkDerivation ({
         echo "key.alias.password=${keyAliasPassword}"
       ) >> ant.properties
     ''}
-  
+
     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"}
   '';
-  
+
   installPhase = ''
     mkdir -p $out
     mv bin/*-${if release then "release" else "debug"}.apk $out