О чем вопрос на самом деле - можете ли вы вводить какие-либо команды непосредственно в gradlew через командную строку для сборки, упаковки и развертывания на устройстве?
О чем вопрос на самом деле - можете ли вы вводить какие-либо команды непосредственно в gradlew через командную строку для сборки, упаковки и развертывания на устройстве?
Ответы:
$ 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'
'com.your.packagename/.path.relative.to.your.packagename.MyActivity'
вместо того, 'com.example/.MyActivity'
если ваша активность не находится в корне вашего пакета.
1. Соберите проект, установите сгенерированный apk на устройство.
# at the root dir of project
$ gradle installDebug
2. Откройте приложение на устройстве.
$ adb shell am start -n yourpackagename/.activityname
alias arun="./gradlew installDebug && adb shell am start -n com.example.package/.LauncherActivity"
#Runs step2 Только когда Шаг 1 успешен
Однострочное предложение:
Создать проект и установить созданный 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, на который указывает in local.properties
.monkey
Инструмент позволяет отправить пусковое намерение, так что вы не должны знать название вашей деятельности.adb shell am start your.package.name.debugsuffix\.Activity
Сборка -> удалить старую версию -> установить новую версию -> запустить приложение.
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]
Я написал эту задачу, чтобы иметь возможность установить, а также открыть приложение на устройстве. Так как у меня было несколько 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}
вас уже есть.
gradle tasks
полезно увидеть готовые задачи, которые включают установку (но не запуск, как указано ниже)