Можете ли вы развернуть устройство через Gradle из командной строки

В чем, собственно говоря, говорится: можете ли вы выдавать какие-либо команды непосредственно в gradlew через командную строку для сборки, упаковки и развертывания на устройстве?

Solutions Collecting From Web of "Можете ли вы развернуть устройство через Gradle из командной строки"

 $ gradle installDebug 

Это приведет к откату сборки apk для устройства, но вам придется вручную запустить приложение.

Поскольку вы используете Gradle, вы можете просто добавить свою собственную задачу в build.gradle

 task appStart(type: Exec, dependsOn: 'installDebug') { // linux commandLine 'adb', 'shell', 'am', 'start', '-n', 'com.example/.MyActivity' // windows // commandLine 'cmd', '/c', 'adb', 'shell', 'am', 'start', '-n', 'com.example/.MyActivity' } 

Затем назовите его в корне вашего проекта

$ gradle appStart

Обновить:

Если вы используете applicationIdSuffix ".debug" , добавьте .debug в appId только, но оставьте действие нетронутым:

'com.example.debug/com.example.MyActivity'

1. Построить проект, установить сгенерированный apk на устройство

 # at the root dir of project $ gradle installDebug 

2. Откройте приложение на устройстве.

 $ adb shell am start -n yourpackagename/.activityname 

Одно предложение:

Создайте проект и установите сгенерированное приложение apk & Open на устройство

 $ ./gradlew installDebug && adb shell am start -n com.example/.activities.MainActivity 

Для этого есть три команды:

  1. ./gradlew assembleDebug #To build the project

  2. adb install -r ./app/build/outputs/apk/app-debug.apk #To install it to the device

  3. adb shell am start -n $PACKAGE/$PACKAGE.$ACTIVITY #To launch the application in the device , где $ PACKAGE – это пакет разработки, а $ ACTIVITY – это активность, которую нужно запустить (активность запуска).

Я писал сценарий bash для этого , с другими немногими функциями.

Более гибкий способ сделать это – использовать обезьяну:

 task runDebug (type: Exec, dependsOn: 'installDebug') { commandLine android.getAdbExe().toString(), "shell", "monkey", "-p", "your.package.name.debugsuffix", "-c", "android.intent.category.LAUNCHER", "1" } 

Некоторые преимущества этого метода:

  • getAdbExe не требует, чтобы adb находился на пути и использует версию adb из sdk, на которую указывает local.properties .
  • Инструмент monkey позволяет вам отправить намерение запуска, поэтому вам не требуется знать имя вашей деятельности.

Task appStart (type: Exec, dependsOn: 'installDebug') {// вся платформа commandLine android.adbExe, 'shell', 'am', 'start', '-n', 'com.example / .MyActivity'

}

Я написал эту задачу, чтобы иметь возможность устанавливать и открывать приложение на устройстве. Поскольку у меня было несколько buildTypes и buildTypes с разными идентификаторами приложений, было трудно buildTypes код имени пакета. Поэтому я написал это так:

 android.applicationVariants.all { variant -> task "open${variant.name.capitalize()}" { dependsOn "install${variant.name.capitalize()}" doLast { exec { commandLine "adb shell monkey -p ${variant.applicationId} -c android.intent.category.LAUNCHER 1".split(" ") } } } } 

Это даст вам open{variant} для каждой задачи install{variant} вы уже имеете.