Що насправді сказано у запитанні - чи можете ви видавати будь-які команди безпосередньо 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"
# Запускає 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, вказаного в 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
корисно переглянути готові завдання - що включає встановлення (але не починається, як зазначено нижче)