Make the emulator flags configurable at runtime and unimportant messages should go the stderr

This commit is contained in:
Sander van der Burg 2013-08-05 19:08:58 +02:00
parent 2a294a582b
commit 7019b685de

View File

@ -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
'';
}