Можно развернуть на устройстве через Gradle в командной строке
что на самом деле говорит вопрос - Можете ли вы выдавать какие-либо команды непосредственно gradlew через командную строку для сборки, упаковки и развертывания на устройстве?
9 ответов:
$ gradle installDebug
это приведет к отладке сборки apk на устройство, но вы должны вручную запустить приложение.
так как вы используете Gradle, вы можете просто добавить свои собственные задачи построить.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 и открыть приложение на устройстве
$ ./gradlew installDebug && adb shell am start -n com.example/.activities.MainActivity
для этого есть три команды:
./gradlew assembleDebug #To build the project
adb install -r ./app/build/outputs/apk/app-debug.apk #To install it to the device
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
.- The
monkey
инструмент позволяет отправить намерение запуска, так что вы не обязаны знать имя вашей деятельности.
task appStart(type: Exec, dependsOn: 'installDebug') { commandLine android.adbExe, 'shell', 'am', 'start', '-n', 'com.example/.MyActivity' }
я написал эту задачу, чтобы иметь возможность установить, а также открыть приложение на устройстве. Так как у меня было несколько
buildTypes
иflavors
с различными идентификаторами приложений было невозможно жестко закодировать имя пакета. Поэтому я написал это так: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}
задач у вас уже есть.
построить -> удалите старую версию -> установить новую версию -> запуск приложения.
echo "Build application" && ./gradlew clean build && echo "Uninstall application" && adb uninstall [application package] && echo "Install application" && adb -d install app/build/outputs/apk/<build type>/[apk name].apk echo "Run application" && adb shell am start -n [application package]/.[application name]
или если вы хотите установить и запустить приложение в тип отладки.
./gradlew installDebug && adb shell am start -n [application package]/.[application name]