androidsdk: Make AVD storage dir configurable and make activation step optional

This commit is contained in:
Sander van der Burg 2014-02-27 18:46:06 +01:00
parent fb448ba4a1
commit 416db1de92

View File

@ -2,9 +2,9 @@
{ name, app ? null { name, app ? null
, platformVersion ? "8", abiVersion ? "armeabi-v7a", useGoogleAPIs ? false , platformVersion ? "8", abiVersion ? "armeabi-v7a", useGoogleAPIs ? false
, enableGPU ? false, extraAVDFiles ? [] , enableGPU ? false, extraAVDFiles ? []
, package ? null, activity ? null}: , package ? null, activity ? null
, avdHomeDir ? null
assert app != null -> package != null && activity != null; }:
let let
androidsdkComposition = androidsdk { androidsdkComposition = androidsdk {
@ -28,8 +28,12 @@ stdenv.mkDerivation {
export TMPDIR=/tmp export TMPDIR=/tmp
fi fi
${if avdHomeDir == null then ''
# Store the virtual devices somewhere else, instead of polluting a user's HOME directory # Store the virtual devices somewhere else, instead of polluting a user's HOME directory
export ANDROID_SDK_HOME=$(mktemp -d $TMPDIR/nix-android-vm-XXXX) export ANDROID_SDK_HOME=$(mktemp -d $TMPDIR/nix-android-vm-XXXX)
'' else ''
export ANDROID_SDK_HOME=${avdHomeDir}
''}
# We have to look for a free TCP port # We have to look for a free TCP port
@ -106,7 +110,9 @@ stdenv.mkDerivation {
${androidsdkComposition}/libexec/android-sdk-*/platform-tools/adb -s emulator-$port install "$appPath" ${androidsdkComposition}/libexec/android-sdk-*/platform-tools/adb -s emulator-$port install "$appPath"
# 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} ${stdenv.lib.optionalString (package != null && activity != null) ''
${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