mirror of
https://github.com/reactivecircus/android-emulator-runner.git
synced 2026-09-01 01:59:32 +00:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 94bd1ed921 | |||
| c3e261e13b | |||
| 434e949c3b | |||
| 70e3f6e680 | |||
| 0d8602fe47 | |||
| 28373d3d4f |
@@ -36,6 +36,9 @@ jobs:
|
||||
- os: macos-latest
|
||||
api-level: 24
|
||||
target: playstore
|
||||
- os: macos-latest
|
||||
api-level: 28
|
||||
target: google_apis
|
||||
|
||||
steps:
|
||||
- name: checkout
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# Change Log
|
||||
|
||||
## v2.14.2
|
||||
|
||||
* Support API 28 system images with `google_apis` or `google_apis_playstore` target - [#117](https://github.com/ReactiveCircus/android-emulator-runner/pull/117).
|
||||
|
||||
## v2.14.1
|
||||
|
||||
* Fix hang during AVD creation when `profile` is not specified - [#113](https://github.com/ReactiveCircus/android-emulator-runner/issues/113).
|
||||
|
||||
## v2.14.0
|
||||
|
||||
* Support specifying SD card path or size via `sdcard-path-or-size`.
|
||||
|
||||
@@ -37,10 +37,10 @@ const EMULATOR_BOOT_TIMEOUT_SECONDS = 600;
|
||||
function launchEmulator(apiLevel, target, arch, profile, sdcardPathOrSize, avdName, emulatorOptions, disableAnimations) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
// create a new AVD
|
||||
const profileOption = profile.trim() !== '' ? `--device "${profile}"` : '';
|
||||
const sdcardPathOrSizeOption = sdcardPathOrSize.trim() !== '' ? `--sdcard "${sdcardPathOrSize}"` : '';
|
||||
const profileOption = profile.trim() !== '' ? `--device '${profile}'` : '';
|
||||
const sdcardPathOrSizeOption = sdcardPathOrSize.trim() !== '' ? `--sdcard '${sdcardPathOrSize}'` : '';
|
||||
console.log(`Creating AVD.`);
|
||||
yield exec.exec(`avdmanager create avd --force -n "${avdName}" --abi "${target}/${arch}" --package "system-images;android-${apiLevel};${target};${arch}" ${profileOption} ${sdcardPathOrSizeOption}`);
|
||||
yield exec.exec(`sh -c \\"echo no | avdmanager create avd --force -n "${avdName}" --abi '${target}/${arch}' --package 'system-images;android-${apiLevel};${target};${arch}' ${profileOption} ${sdcardPathOrSizeOption}"`);
|
||||
// start emulator
|
||||
console.log('Starting emulator.');
|
||||
// turn off hardware acceleration on Linux
|
||||
|
||||
@@ -62,9 +62,9 @@ function installAndroidSdk(apiLevel, target, arch, emulatorBuild, ndkVersion, cm
|
||||
if (!isOnMac && !fs.existsSync(sdkPreviewLicensePath)) {
|
||||
fs.writeFileSync(sdkPreviewLicensePath, '\n84831b9409646a918e30573bab4c9c91346d8abd');
|
||||
}
|
||||
// license required for API 30 system images
|
||||
// license required for API 30 and non-default API 28 system images
|
||||
const sdkArmDbtLicensePath = `${process.env.ANDROID_SDK_ROOT}/licenses/android-sdk-arm-dbt-license`;
|
||||
if (apiLevel == 30 && !fs.existsSync(sdkArmDbtLicensePath)) {
|
||||
if (requiresArmDbtLicense(apiLevel, target) && !fs.existsSync(sdkArmDbtLicensePath)) {
|
||||
fs.writeFileSync(sdkArmDbtLicensePath, '\n859f317696f67ef3d7f30a50a5560e7834b43903');
|
||||
}
|
||||
console.log('Installing latest build tools, platform tools, and platform.');
|
||||
@@ -93,3 +93,6 @@ function installAndroidSdk(apiLevel, target, arch, emulatorBuild, ndkVersion, cm
|
||||
});
|
||||
}
|
||||
exports.installAndroidSdk = installAndroidSdk;
|
||||
function requiresArmDbtLicense(apiLevel, target) {
|
||||
return apiLevel === 30 || (apiLevel === 28 && target !== 'default');
|
||||
}
|
||||
|
||||
@@ -16,10 +16,12 @@ export async function launchEmulator(
|
||||
disableAnimations: boolean
|
||||
): Promise<void> {
|
||||
// create a new AVD
|
||||
const profileOption = profile.trim() !== '' ? `--device "${profile}"` : '';
|
||||
const sdcardPathOrSizeOption = sdcardPathOrSize.trim() !== '' ? `--sdcard "${sdcardPathOrSize}"` : '';
|
||||
const profileOption = profile.trim() !== '' ? `--device '${profile}'` : '';
|
||||
const sdcardPathOrSizeOption = sdcardPathOrSize.trim() !== '' ? `--sdcard '${sdcardPathOrSize}'` : '';
|
||||
console.log(`Creating AVD.`);
|
||||
await exec.exec(`avdmanager create avd --force -n "${avdName}" --abi "${target}/${arch}" --package "system-images;android-${apiLevel};${target};${arch}" ${profileOption} ${sdcardPathOrSizeOption}`);
|
||||
await exec.exec(
|
||||
`sh -c \\"echo no | avdmanager create avd --force -n "${avdName}" --abi '${target}/${arch}' --package 'system-images;android-${apiLevel};${target};${arch}' ${profileOption} ${sdcardPathOrSizeOption}"`
|
||||
);
|
||||
|
||||
// start emulator
|
||||
console.log('Starting emulator.');
|
||||
|
||||
@@ -36,9 +36,9 @@ export async function installAndroidSdk(apiLevel: number, target: string, arch:
|
||||
fs.writeFileSync(sdkPreviewLicensePath, '\n84831b9409646a918e30573bab4c9c91346d8abd');
|
||||
}
|
||||
|
||||
// license required for API 30 system images
|
||||
// license required for API 30 and non-default API 28 system images
|
||||
const sdkArmDbtLicensePath = `${process.env.ANDROID_SDK_ROOT}/licenses/android-sdk-arm-dbt-license`;
|
||||
if (apiLevel == 30 && !fs.existsSync(sdkArmDbtLicensePath)) {
|
||||
if (requiresArmDbtLicense(apiLevel, target) && !fs.existsSync(sdkArmDbtLicensePath)) {
|
||||
fs.writeFileSync(sdkArmDbtLicensePath, '\n859f317696f67ef3d7f30a50a5560e7834b43903');
|
||||
}
|
||||
|
||||
@@ -67,3 +67,7 @@ export async function installAndroidSdk(apiLevel: number, target: string, arch:
|
||||
await exec.exec(`sh -c \\"sdkmanager --install 'cmake;${cmakeVersion}' > /dev/null"`);
|
||||
}
|
||||
}
|
||||
|
||||
function requiresArmDbtLicense(apiLevel: number, target: string): boolean {
|
||||
return apiLevel === 30 || (apiLevel === 28 && target !== 'default');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user