Câu hỏi thực sự nói lên điều gì - bạn có thể đưa ra bất kỳ lệnh nào trực tiếp để gradlew thông qua dòng lệnh để xây dựng, đóng gói và triển khai cho một thiết bị không?
Câu hỏi thực sự nói lên điều gì - bạn có thể đưa ra bất kỳ lệnh nào trực tiếp để gradlew thông qua dòng lệnh để xây dựng, đóng gói và triển khai cho một thiết bị không?
Câu trả lời:
$ gradle installDebug
Thao tác này sẽ đẩy apk xây dựng gỡ lỗi đến thiết bị, nhưng bạn phải khởi động ứng dụng theo cách thủ công.
Vì bạn đang sử dụng Gradle, bạn có thể đơn giản thêm tác vụ của riêng mình trong 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'
}
sau đó gọi nó trong gốc dự án của bạn
$ gradle appStart
Cập nhật:
Nếu bạn đang sử dụng applicationIdSuffix ".debug"
, hãy chỉ thêm .debug
vào appId nhưng để nguyên hoạt động:
'com.example.debug/com.example.MyActivity'
'com.your.packagename/.path.relative.to.your.packagename.MyActivity'
thay vì 'com.example/.MyActivity'
nếu Activity của bạn không nằm trong thư mục gốc của gói.
1. Xây dựng dự án, cài đặt apk đã tạo vào thiết bị
# at the root dir of project
$ gradle installDebug
2. Mở ứng dụng trên thiết bị
$ adb shell am start -n yourpackagename/.activityname
alias arun="./gradlew installDebug && adb shell am start -n com.example.package/.LauncherActivity"
#Runs STEP2 Chỉ khi Bước 1 là thành công
Một câu dòng:
Xây dựng dự án & Cài đặt apk đã tạo & Mở ứng dụng trên thiết bị
$ ./gradlew installDebug && adb shell am start -n com.example/.activities.MainActivity
Có ba lệnh để thực hiện điều này:
./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
, trong đó $ PACKAGE là gói phát triển và $ ACTIVITY là hoạt động sẽ được khởi chạy (hoạt động của trình khởi chạy).
Tôi đã viết một kịch bản bash để làm điều này , với một số tính năng khác.
Một cách linh hoạt hơn để làm điều đó là sử dụng khỉ:
task runDebug (type: Exec, dependsOn: 'installDebug') {
commandLine android.getAdbExe().toString(), "shell",
"monkey",
"-p", "your.package.name.debugsuffix",
"-c", "android.intent.category.LAUNCHER", "1"
}
Một số ưu điểm của phương pháp này:
getAdbExe
không yêu cầu adb ở trên đường dẫn và sử dụng phiên bản adb từ sdk được trỏ đến local.properties
.monkey
cụ này cho phép bạn gửi ý định khởi chạy, vì vậy bạn không bắt buộc phải biết tên hoạt động của mình.adb shell am start your.package.name.debugsuffix\.Activity
Xây dựng -> gỡ cài đặt xác minh cũ -> cài đặt phiên bản mới -> chạy ứng dụng.
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]
Hoặc nếu bạn muốn cài đặt và chạy ứng dụng trong loại gỡ lỗi.
./gradlew installDebug && adb shell am start -n [application package]/.[application name]
Tôi đã viết tác vụ này để có thể cài đặt và cũng có thể mở ứng dụng trên thiết bị. Vì tôi có nhiều buildTypes
và flavors
với các id ứng dụng khác nhau, nên việc mã hóa tên gói là không khả thi. Vì vậy, tôi đã viết nó như sau:
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(" ")
}
}
}
}
Điều này sẽ cung cấp cho bạn open{variant}
cho mọiinstall{variant}
nhiệm vụ bạn đã có.
gradle tasks
là hữu ích để xem ra trong những nhiệm vụ hộp - trong đó bao gồm cài đặt (nhưng không bắt đầu như đã nêu dưới đây)