Разверните и запустите APK на нескольких эмуляторах Android после сборки, используя скрипт npm - PullRequest
0 голосов
/ 22 апреля 2020

Используя ADB , мы можем установить APK и запустить его, но

, если вы введете команду без указания целевого устройства, когда доступно несколько устройств, adb выдаст ошибку.

, поэтому мы можем использовать

adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X install -r com.myAppPackage

для установки данного приложения на все подключенные устройства. Добавить псевдоним просто так:

alias installAPK="adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X X install -r $1"

Но мне было интересно, как я могу развернуть и запустить APK на нескольких эмуляторах Android после того, как он был построен с использованием npm?

1 Ответ

0 голосов
/ 22 апреля 2020

В вашем package.json добавьте следующее

{
  "scripts":{
      "android-build-dev": "ionic cordova build android --device --prod",
      "android-deploy-to-emulator": "node android.emulator.config.js",
      "android-build-and-deploy-to-emulator": "npm run android-build-dev && npm run android-deploy-to-emulator"
   }
}

android.emulator.config.js содержит следующее

const execSync = require("child_process").execSync;

const devicesOutput = execSync("adbn devices", { encoding: "utf-8" });

const deviceIds = devicesOutput.match(/emulator-\d{4}/g);

const execSyncOptions = { encoding: "utf-8", stdio: "inherit" };

deviceIds.forEach((deviceId) => {

      execSync(`adbn -s ${deviceId} install ./platforms/android/app/build/outputs/apk/debug/app-debug.apk`, execSyncOptions);

      execSync(`adbn -s ${deviceId} shell am start -n yourappname.app/.MainActivity`);

    });
...