Apa sebenarnya pertanyaan itu - dapatkah Anda mengeluarkan perintah apa pun secara langsung ke gradlew melalui baris perintah untuk membangun, mengemas, dan menerapkan ke perangkat?
Apa sebenarnya pertanyaan itu - dapatkah Anda mengeluarkan perintah apa pun secara langsung ke gradlew melalui baris perintah untuk membangun, mengemas, dan menerapkan ke perangkat?
Jawaban:
$ gradle installDebug
Ini akan mendorong apk build debug ke perangkat, tetapi Anda harus memulai aplikasi secara manual.
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'
'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
$ adb shell am start -n yourpackagename/.activityname
alias arun="./gradlew installDebug && adb shell am start -n com.example.package/.LauncherActivity"
#Jalankan langkah2 Hanya saat Langkah 1 berhasil
Kalimat satu baris:
Bangun proyek & Instal apk yang dihasilkan & Buka aplikasi di perangkat
$ ./gradlew installDebug && adb shell am start -n com.example/.activities.MainActivity
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.
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 di local.properties
.monkey
alat memungkinkan Anda untuk mengirim peluncur niat, sehingga Anda tidak diharuskan untuk mengetahui nama aktivitas Anda.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]
Saya menulis tugas ini untuk dapat menginstal dan juga membuka aplikasi di perangkat. Karena saya memiliki banyak buildTypes
dan flavors
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 setiap install{variant}
tugas yang sudah Anda miliki.
gradle tasks
sangat membantu untuk melihat tugas di luar kotak - yang termasuk menginstal (tetapi tidak dimulai seperti yang dinyatakan di bawah)