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ı:
getAdbExe
adb'nin yolda olmasını gerektirmez ve sdk'nin işaret ettiği adb sürümünü kullanır local.properties
.monkey
Araç, 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 buildTypes
ve flavors
farklı 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 tasks
yüklemeyi içeren (ancak aşağıda belirtildiği gibi başlatılmayan) kutudan çıktığı görevleri görmeye yardımcı olur