Apa sebenarnya pertanyaan itu - dapatkah Anda mengeluarkan perintah apa pun secara langsung ke gradlew melalui baris perintah untuk membangun, mengemas, dan menerapkan ke perangkat?
android
gradle
android-studio
gradlew
Matt Whetton
sumber
sumber
gradle tasks
sangat membantu untuk melihat tugas di luar kotak - yang termasuk menginstal (tetapi tidak dimulai seperti yang dinyatakan di bawah)Jawaban:
Ini akan mendorong apk build debug ke perangkat, tetapi Anda harus memulai aplikasi secara manual.
sumber
Karena Anda menggunakan Gradle, Anda cukup menambahkan tugas Anda sendiri di 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' }
kemudian panggil di root proyek Anda
$ gradle appStart
Memperbarui:
Jika Anda menggunakan
applicationIdSuffix ".debug"
, tambahkan.debug
ke appId saja tetapi biarkan aktivitas tidak tersentuh:'com.example.debug/com.example.MyActivity'
sumber
'com.your.packagename/.path.relative.to.your.packagename.MyActivity'
bukan'com.example/.MyActivity'
jika Aktivitas Anda tidak berada di root paket Anda.1. Bangun proyek, instal apk yang dihasilkan ke perangkat
# at the root dir of project $ gradle installDebug
2. Buka aplikasi di perangkat
sumber
alias arun="./gradlew installDebug && adb shell am start -n com.example.package/.LauncherActivity"
#Jalankan langkah2 Hanya saat Langkah 1 berhasilKalimat satu baris:
Bangun proyek & Instal apk yang dihasilkan & Buka aplikasi di perangkat
$ ./gradlew installDebug && adb shell am start -n com.example/.activities.MainActivity
sumber
Ada tiga perintah untuk melakukannya:
./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
, di mana $ PACKAGE adalah paket pengembangan dan $ ACTIVITY adalah aktivitas yang akan diluncurkan (aktivitas peluncur).Saya telah menulis skrip bash untuk melakukan ini , dengan beberapa fitur lainnya.
sumber
Cara yang lebih fleksibel untuk melakukannya adalah dengan menggunakan monyet:
task runDebug (type: Exec, dependsOn: 'installDebug') { commandLine android.getAdbExe().toString(), "shell", "monkey", "-p", "your.package.name.debugsuffix", "-c", "android.intent.category.LAUNCHER", "1" }
Beberapa keuntungan dari metode ini:
getAdbExe
tidak memerlukan adb berada di jalur dan menggunakan versi adb dari sdk yang ditunjukkan dilocal.properties
.monkey
alat memungkinkan Anda untuk mengirim peluncur niat, sehingga Anda tidak diharuskan untuk mengetahui nama aktivitas Anda.sumber
adb shell am start your.package.name.debugsuffix\.Activity
Bangun -> hapus instalan versi lama -> instal versi baru -> jalankan aplikasi.
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]
Atau jika Anda ingin menginstal dan menjalankan aplikasi dalam tipe debug.
./gradlew installDebug && adb shell am start -n [application package]/.[application name]
sumber
task appStart(type: Exec, dependsOn: 'installDebug') { commandLine android.adbExe, 'shell', 'am', 'start', '-n', 'com.example/.MyActivity' }
sumber
Saya menulis tugas ini untuk dapat menginstal dan juga membuka aplikasi di perangkat. Karena saya memiliki banyak
buildTypes
danflavors
dengan id aplikasi yang berbeda, tidak mungkin untuk membuat kode keras nama paket. Jadi saya menulisnya seperti ini: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(" ") } } } }
Ini akan memberi Anda
open{variant}
untuk setiapinstall{variant}
tugas yang sudah Anda miliki.sumber