Make the emulator flags configurable at runtime and unimportant messages should go the stderr
This commit is contained in:
parent
2a294a582b
commit
7019b685de
@ -1,5 +1,7 @@
|
|||||||
{stdenv, androidsdk}:
|
{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
|
let
|
||||||
androidsdkComposition = androidsdk {
|
androidsdkComposition = androidsdk {
|
||||||
@ -28,7 +30,7 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
# We have to look for a free TCP port
|
# 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)
|
for i in $(seq 5554 2 5584)
|
||||||
do
|
do
|
||||||
@ -41,10 +43,10 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
if [ -z "$port" ]
|
if [ -z "$port" ]
|
||||||
then
|
then
|
||||||
echo "Unfortunately, the emulator port space is exhausted!"
|
echo "Unfortunately, the emulator port space is exhausted!" >&2
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
echo "We have a free TCP port: $port"
|
echo "We have a free TCP port: $port" >&2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export ANDROID_SERIAL="emulator-$port"
|
export ANDROID_SERIAL="emulator-$port"
|
||||||
@ -58,39 +60,40 @@ stdenv.mkDerivation {
|
|||||||
''}
|
''}
|
||||||
|
|
||||||
# Launch the emulator
|
# 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
|
# 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
|
${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)" ]
|
while [ -z "$(${androidsdkComposition}/libexec/android-sdk-*/platform-tools/adb -s emulator-$port shell getprop dev.bootcomplete | grep 1)" ]
|
||||||
do
|
do
|
||||||
sleep 5
|
sleep 5
|
||||||
done
|
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)" ]
|
#while [ -z "$(${androidsdkComposition}/libexec/android-sdk-*/platform-tools/adb -s emulator-$port shell getprop sys.boot_completed | grep 1)" ]
|
||||||
#do
|
#do
|
||||||
#sleep 5
|
#sleep 5
|
||||||
#done
|
#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
|
${stdenv.lib.optionalString (app != null) ''
|
||||||
${androidsdkComposition}/libexec/android-sdk-*/platform-tools/adb -s emulator-$port install ${app}/*.apk
|
# Install the App through the debugger
|
||||||
|
${androidsdkComposition}/libexec/android-sdk-*/platform-tools/adb -s emulator-$port install ${app}/*.apk
|
||||||
|
|
||||||
# Start the application
|
# Start the application
|
||||||
${androidsdkComposition}/libexec/android-sdk-*/platform-tools/adb -s emulator-$port shell am start -a android.intent.action.MAIN -n ${package}/.${activity}
|
${androidsdkComposition}/libexec/android-sdk-*/platform-tools/adb -s emulator-$port shell am start -a android.intent.action.MAIN -n ${package}/.${activity}
|
||||||
|
''}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
chmod +x $out/bin/run-test-emulator
|
chmod +x $out/bin/run-test-emulator
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user