From 7019b685de75b7cec5454d7901744cd92328d271 Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Mon, 5 Aug 2013 19:08:58 +0200 Subject: [PATCH] Make the emulator flags configurable at runtime and unimportant messages should go the stderr --- .../mobile/androidenv/emulate-app.nix | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/pkgs/development/mobile/androidenv/emulate-app.nix b/pkgs/development/mobile/androidenv/emulate-app.nix index eb39d854d1fb..ae8b7f8d1efb 100644 --- a/pkgs/development/mobile/androidenv/emulate-app.nix +++ b/pkgs/development/mobile/androidenv/emulate-app.nix @@ -1,5 +1,7 @@ {stdenv, androidsdk}: -{name, app, platformVersion ? "8", abiVersion ? "armeabi-v7a", useGoogleAPIs ? false, enableGPU ? false, package, activity}: +{name, app ? null, platformVersion ? "8", abiVersion ? "armeabi-v7a", useGoogleAPIs ? false, enableGPU ? false, package ? null, activity ? null}: + +assert app != null -> package != null && activity != null; let androidsdkComposition = androidsdk { @@ -28,7 +30,7 @@ stdenv.mkDerivation { # We have to look for a free TCP port - echo "Looking for a free TCP port in range 5554-5584" + echo "Looking for a free TCP port in range 5554-5584" >&2 for i in $(seq 5554 2 5584) do @@ -41,10 +43,10 @@ stdenv.mkDerivation { if [ -z "$port" ] then - echo "Unfortunately, the emulator port space is exhausted!" + echo "Unfortunately, the emulator port space is exhausted!" >&2 exit 1 else - echo "We have a free TCP port: $port" + echo "We have a free TCP port: $port" >&2 fi export ANDROID_SERIAL="emulator-$port" @@ -58,39 +60,40 @@ stdenv.mkDerivation { ''} # Launch the emulator - ${androidsdkComposition}/libexec/android-sdk-*/tools/emulator -avd device -no-boot-anim -port $port & + ${androidsdkComposition}/libexec/android-sdk-*/tools/emulator -avd device -no-boot-anim -port $port $NIX_ANDROID_EMULATOR_FLAGS & # Wait until the device has completely booted - echo "Waiting until the emulator has booted the device and the package manager is ready..." + echo "Waiting until the emulator has booted the device and the package manager is ready..." >&2 ${androidsdkComposition}/libexec/android-sdk-*/platform-tools/adb -s emulator-$port wait-for-device - echo "Device state has been reached" + echo "Device state has been reached" >&2 while [ -z "$(${androidsdkComposition}/libexec/android-sdk-*/platform-tools/adb -s emulator-$port shell getprop dev.bootcomplete | grep 1)" ] do sleep 5 done - echo "dev.bootcomplete property is 1" + echo "dev.bootcomplete property is 1" >&2 #while [ -z "$(${androidsdkComposition}/libexec/android-sdk-*/platform-tools/adb -s emulator-$port shell getprop sys.boot_completed | grep 1)" ] #do #sleep 5 #done - #echo "sys.boot_completed property is 1" + #echo "sys.boot_completed property is 1" >&2 - echo "ready" + echo "ready" >&2 - # Install the App through the debugger - ${androidsdkComposition}/libexec/android-sdk-*/platform-tools/adb -s emulator-$port install ${app}/*.apk + ${stdenv.lib.optionalString (app != null) '' + # Install the App through the debugger + ${androidsdkComposition}/libexec/android-sdk-*/platform-tools/adb -s emulator-$port install ${app}/*.apk - # Start the application - ${androidsdkComposition}/libexec/android-sdk-*/platform-tools/adb -s emulator-$port shell am start -a android.intent.action.MAIN -n ${package}/.${activity} + # Start the application + ${androidsdkComposition}/libexec/android-sdk-*/platform-tools/adb -s emulator-$port shell am start -a android.intent.action.MAIN -n ${package}/.${activity} + ''} EOF - chmod +x $out/bin/run-test-emulator ''; }