-
-
Notifications
You must be signed in to change notification settings - Fork 14k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #213871 from hadilq/androidenv/fix-create-avd
- Loading branch information
Showing
7 changed files
with
257 additions
and
46 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,3 @@ | ||
/xml | ||
local.properties | ||
.android |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
151 changes: 151 additions & 0 deletions
151
pkgs/development/mobile/androidenv/examples/shell-with-emulator.nix
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,151 @@ | ||
{ | ||
# To test your changes in androidEnv run `nix-shell android-sdk-with-emulator-shell.nix` | ||
|
||
# If you copy this example out of nixpkgs, use these lines instead of the next. | ||
# This example pins nixpkgs: https://nix.dev/tutorials/towards-reproducibility-pinning-nixpkgs.html | ||
/*nixpkgsSource ? (builtins.fetchTarball { | ||
name = "nixpkgs-20.09"; | ||
url = "https://github.com/NixOS/nixpkgs/archive/20.09.tar.gz"; | ||
sha256 = "1wg61h4gndm3vcprdcg7rc4s1v3jkm5xd7lw8r2f67w502y94gcy"; | ||
}), | ||
pkgs ? import nixpkgsSource { | ||
config.allowUnfree = true; | ||
}, | ||
*/ | ||
|
||
# If you want to use the in-tree version of nixpkgs: | ||
pkgs ? import ../../../../.. { | ||
config.allowUnfree = true; | ||
}, | ||
|
||
config ? pkgs.config | ||
}: | ||
|
||
# Copy this file to your Android project. | ||
let | ||
# Declaration of versions for everything. This is useful since these | ||
# versions may be used in multiple places in this Nix expression. | ||
android = { | ||
platforms = [ "33" ]; | ||
systemImageTypes = [ "google_apis" ]; | ||
abis = [ "arm64-v8a" "x86_64" ]; | ||
}; | ||
|
||
# If you copy this example out of nixpkgs, something like this will work: | ||
/*androidEnvNixpkgs = fetchTarball { | ||
name = "androidenv"; | ||
url = "https://github.com/NixOS/nixpkgs/archive/<fill me in from Git>.tar.gz"; | ||
sha256 = "<fill me in with nix-prefetch-url --unpack>"; | ||
}; | ||
androidEnv = pkgs.callPackage "${androidEnvNixpkgs}/pkgs/development/mobile/androidenv" { | ||
inherit config pkgs; | ||
licenseAccepted = true; | ||
};*/ | ||
|
||
# Otherwise, just use the in-tree androidenv: | ||
androidEnv = pkgs.callPackage ./.. { | ||
inherit config pkgs; | ||
# You probably need to uncomment below line to express consent. | ||
# licenseAccepted = true; | ||
}; | ||
|
||
sdkArgs = { | ||
platformVersions = android.platforms; | ||
abiVersions = android.abis; | ||
systemImageTypes = android.systemImageTypes; | ||
|
||
includeSystemImages = true; | ||
includeEmulator = true; | ||
|
||
# Accepting more licenses declaratively: | ||
extraLicenses = [ | ||
# Already accepted for you with the global accept_license = true or | ||
# licenseAccepted = true on androidenv. | ||
# "android-sdk-license" | ||
|
||
# These aren't, but are useful for more uncommon setups. | ||
"android-sdk-preview-license" | ||
"android-googletv-license" | ||
"android-sdk-arm-dbt-license" | ||
"google-gdk-license" | ||
"intel-android-extra-license" | ||
"intel-android-sysimage-license" | ||
"mips-android-sysimage-license" | ||
]; | ||
}; | ||
|
||
androidComposition = androidEnv.composeAndroidPackages sdkArgs; | ||
androidEmulator = androidEnv.emulateApp { | ||
name = "android-sdk-emulator-demo"; | ||
sdkExtraArgs = sdkArgs; | ||
}; | ||
androidSdk = androidComposition.androidsdk; | ||
platformTools = androidComposition.platform-tools; | ||
jdk = pkgs.jdk; | ||
in | ||
pkgs.mkShell rec { | ||
name = "androidenv-demo"; | ||
packages = [ androidSdk platformTools androidEmulator jdk pkgs.android-studio ]; | ||
|
||
LANG = "C.UTF-8"; | ||
LC_ALL = "C.UTF-8"; | ||
JAVA_HOME = jdk.home; | ||
|
||
# Note: ANDROID_HOME is deprecated. Use ANDROID_SDK_ROOT. | ||
ANDROID_SDK_ROOT = "${androidSdk}/libexec/android-sdk"; | ||
ANDROID_NDK_ROOT = "${ANDROID_SDK_ROOT}/ndk-bundle"; | ||
|
||
shellHook = '' | ||
# Write out local.properties for Android Studio. | ||
cat <<EOF > local.properties | ||
# This file was automatically generated by nix-shell. | ||
sdk.dir=$ANDROID_SDK_ROOT | ||
ndk.dir=$ANDROID_NDK_ROOT | ||
EOF | ||
''; | ||
|
||
passthru.tests = { | ||
|
||
shell-with-emulator-sdkmanager-packages-test = pkgs.runCommand "shell-with-emulator-sdkmanager-packages-test" { | ||
nativeBuildInputs = [ androidSdk jdk ]; | ||
} '' | ||
output="$(sdkmanager --list)" | ||
installed_packages_section=$(echo "''${output%%Available Packages*}" | awk 'NR>4 {print $1}') | ||
echo "installed_packages_section: ''${installed_packages_section}" | ||
packages=( | ||
"build-tools;33.0.1" "cmdline-tools;8.0" \ | ||
"emulator" "patcher;v4" "platform-tools" "platforms;android-33" \ | ||
"system-images;android-33;google_apis;arm64-v8a" \ | ||
"system-images;android-33;google_apis;x86_64" | ||
) | ||
for package in "''${packages[@]}"; do | ||
if [[ ! $installed_packages_section =~ "$package" ]]; then | ||
echo "$package package was not installed." | ||
exit 1 | ||
fi | ||
done | ||
touch "$out" | ||
''; | ||
|
||
shell-with-emulator-avdmanager-create-avd-test = pkgs.runCommand "shell-with-emulator-avdmanager-create-avd-test" { | ||
nativeBuildInputs = [ androidSdk androidEmulator jdk ]; | ||
} '' | ||
avdmanager delete avd -n testAVD || true | ||
echo "" | avdmanager create avd --force --name testAVD --package 'system-images;android-33;google_apis;x86_64' | ||
result=$(avdmanager list avd) | ||
if [[ ! $result =~ "Name: testAVD" ]]; then | ||
echo "avdmanager couldn't create the avd! The output is :''${result}" | ||
exit 1 | ||
fi | ||
avdmanager delete avd -n testAVD || true | ||
touch "$out" | ||
''; | ||
}; | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.