Soru gerçekten ne diyor - bir cihazı oluşturmak, paketlemek ve bir cihaza dağıtmak için komut satırı aracılığıyla doğrudan gradlew'e herhangi bir komut verebilir misiniz?
Soru gerçekten ne diyor - bir cihazı oluşturmak, paketlemek ve bir cihaza dağıtmak için komut satırı aracılığıyla doğrudan gradlew'e herhangi bir komut verebilir misiniz?
Yanıtlar:
$ gradle installDebug
Bu, hata ayıklama derleme apk'sini cihaza gönderir, ancak uygulamayı manuel olarak başlatmanız gerekir.
Gradle kullandığınız için build.gradle'a kendi görevinizi kolayca ekleyebilirsiniz.
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'
}
sonra onu proje kök dizininde çağır
$ gradle appStart
Güncelleme:
Eğer kullanıyorsanız applicationIdSuffix ".debug", sadece appId'e ekleyin .debug, ancak aktiviteye dokunmadan bırakın:
'com.example.debug/com.example.MyActivity'
'com.your.packagename/.path.relative.to.your.packagename.MyActivity'yerine olmalıdır 'com.example/.MyActivity'.
1. Proje oluşturun, oluşturulan apk'yi cihaza yükleyin
# at the root dir of project
$ gradle installDebug
2. Cihazda uygulamayı açın
$ adb shell am start -n yourpackagename/.activityname
alias arun="./gradlew installDebug && adb shell am start -n com.example.package/.LauncherActivity"#Runs step2 Yalnızca Adım 1 başarılı olduğunda
Bir satır cümle:
Proje oluştur ve oluşturulan apk'yi yükle ve uygulamayı cihaza aç
$ ./gradlew installDebug && adb shell am start -n com.example/.activities.MainActivity
Bunu başarmak için üç komut vardır:
./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, burada $ PACKAGE geliştirme paketi ve $ ACTIVITY başlatılacak etkinliktir (başlatıcı etkinliği).
Bunu yapmak için diğer birkaç özellikle birlikte bir bash betiği yazıyorum .
Bunu yapmanın daha esnek bir yolu maymun kullanmaktır:
task runDebug (type: Exec, dependsOn: 'installDebug') {
commandLine android.getAdbExe().toString(), "shell",
"monkey",
"-p", "your.package.name.debugsuffix",
"-c", "android.intent.category.LAUNCHER", "1"
}
Bu yöntemin bazı avantajları:
getAdbExeadb'nin yolda olmasını gerektirmez ve sdk'nin işaret ettiği adb sürümünü kullanır local.properties.monkeyAraç, etkinliğin adını bilmek gerekmez böylece, niyet bir başlatıcısı göndermesini sağlar.adb shell am start your.package.name.debugsuffix\.Activity
Oluştur -> eski sürümü kaldır -> yeni sürümü yükle -> uygulamayı çalıştır.
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]
Veya uygulamayı hata ayıklama türünde yüklemek ve çalıştırmak istiyorsanız.
./gradlew installDebug && adb shell am start -n [application package]/.[application name]
Bu görevi, uygulamayı cihaza yükleyebilmek ve ayrıca açabilmek için yazdım. Birden çok buildTypesve flavorsfarklı uygulama kimliklerine sahip olduğum için paket adını sabit kodlamak mümkün değildi. Ben de onun yerine şöyle yazdım:
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(" ")
}
}
}
}
Bu, sahip olduğunuz open{variant}her install{variant}görev için size verecektir .
gradle tasksyüklemeyi içeren (ancak aşağıda belirtildiği gibi başlatılmayan) kutudan çıktığı görevleri görmeye yardımcı olur