สิ่งที่คำถามพูดจริงๆ - คุณสามารถออกคำสั่งโดยตรงกับ gradlew ผ่านทางบรรทัดคำสั่งเพื่อสร้างบรรจุภัณฑ์และปรับใช้กับอุปกรณ์ได้หรือไม่?
สิ่งที่คำถามพูดจริงๆ - คุณสามารถออกคำสั่งโดยตรงกับ gradlew ผ่านทางบรรทัดคำสั่งเพื่อสร้างบรรจุภัณฑ์และปรับใช้กับอุปกรณ์ได้หรือไม่?
คำตอบ:
$ gradle installDebug
การดำเนินการนี้จะส่ง debug build apk ไปยังอุปกรณ์ แต่คุณต้องเริ่มแอปพลิเคชันด้วยตนเอง
เนื่องจากคุณใช้ Gradle คุณสามารถเพิ่มงานของคุณเองใน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'
}
จากนั้นเรียกมันในรูทโปรเจ็กต์ของคุณ
$ gradle appStart
อัปเดต:
หากคุณกำลังใช้applicationIdSuffix ".debug"
ให้เพิ่มลง.debug
ในappId เท่านั้นแต่ปล่อยให้กิจกรรมนั้นไม่มีใครแตะต้อง:
'com.example.debug/com.example.MyActivity'
'com.your.packagename/.path.relative.to.your.packagename.MyActivity'
แทน'com.example/.MyActivity'
หากกิจกรรมของคุณไม่อยู่ในรูทของแพ็กเกจของคุณ
1. สร้างโครงการติดตั้ง apk ที่สร้างขึ้นไปยังอุปกรณ์
# at the root dir of project
$ gradle installDebug
2. เปิดแอปบนอุปกรณ์
$ adb shell am start -n yourpackagename/.activityname
alias arun="./gradlew installDebug && adb shell am start -n com.example.package/.LauncherActivity"
# เรียกใช้ step2 เมื่อขั้นตอนที่ 1 สำเร็จเท่านั้น
ประโยคบรรทัดเดียว:
สร้างโครงการและติดตั้ง apk ที่สร้างขึ้นและเปิดแอปบนอุปกรณ์
$ ./gradlew installDebug && adb shell am start -n com.example/.activities.MainActivity
มีสามคำสั่งที่จะทำให้สำเร็จ:
./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
โดยที่ $ PACKAGE คือแพ็คเกจการพัฒนาและ $ ACTIVITY คือกิจกรรมที่จะเปิดตัว (กิจกรรมตัวเรียกใช้งาน)
ฉันเขียนสคริปต์ทุบตีเพื่อทำสิ่งนี้พร้อมคุณสมบัติอื่น ๆ อีกเล็กน้อย
วิธีที่ยืดหยุ่นกว่านี้คือการใช้ลิง:
task runDebug (type: Exec, dependsOn: 'installDebug') {
commandLine android.getAdbExe().toString(), "shell",
"monkey",
"-p", "your.package.name.debugsuffix",
"-c", "android.intent.category.LAUNCHER", "1"
}
ข้อดีบางประการของวิธีนี้:
getAdbExe
ไม่จำเป็นต้อง adb ที่จะอยู่บนเส้นทางและใช้รุ่น adb จาก SDK local.properties
ที่ชี้ไปในmonkey
เครื่องมือที่ช่วยให้คุณส่งปล่อยเจตนาเพื่อให้คุณไม่จำเป็นต้องทราบชื่อกิจกรรมของคุณadb shell am start your.package.name.debugsuffix\.Activity
สร้าง -> ถอนการติดตั้งเวอร์ชันเก่า -> ติดตั้งเวอร์ชันใหม่ -> เรียกใช้แอปพลิเคชัน
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]
หรือหากคุณต้องการติดตั้งและเรียกใช้แอปพลิเคชันในประเภทดีบัก
./gradlew installDebug && adb shell am start -n [application package]/.[application name]
task appStart(type: Exec, dependsOn: 'installDebug') {
commandLine android.adbExe, 'shell', 'am', 'start', '-n', 'com.example/.MyActivity'
}
ฉันเขียนงานนี้เพื่อให้สามารถติดตั้งและเปิดแอปพลิเคชันบนอุปกรณ์ได้ ตั้งแต่ฉันได้หลายbuildTypes
และflavors
มีการประยุกต์ใช้รหัสที่แตกต่างกันมันก็ไม่ได้เป็นไปได้ยากรหัสชื่อแพคเกจ เลยเขียนแบบนี้แทน:
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(" ")
}
}
}
}
สิ่งนี้จะให้คุณopen{variant}
สำหรับทุกinstall{variant}
งานที่คุณมีอยู่แล้ว
gradle tasks
มีประโยชน์ในการดูงานนอกกรอบ - ซึ่งรวมถึงการติดตั้ง (แต่ไม่เริ่มตามที่ระบุไว้ด้านล่าง)