प्रश्न वास्तव में क्या कहता है - क्या आप डिवाइस पर निर्माण, पैकेज और तैनाती के लिए कमांड लाइन के माध्यम से सीधे वर्गीकृत करने के लिए कोई आदेश जारी कर सकते हैं?
प्रश्न वास्तव में क्या कहता है - क्या आप डिवाइस पर निर्माण, पैकेज और तैनाती के लिए कमांड लाइन के माध्यम से सीधे वर्गीकृत करने के लिए कोई आदेश जारी कर सकते हैं?
जवाबों:
$ gradle installDebug
यह डिबग बिल्ड एपीके को डिवाइस पर धकेल देगा, लेकिन आपको एप्लिकेशन को मैन्युअल रूप से शुरू करना होगा।
चूंकि आप ग्रैडल का उपयोग कर रहे हैं, आप 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"
#Runs step2 केवल जब चरण 1 सफलता है
इसे पूरा करने के लिए तीन कमांड हैं:
./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
, जहां $ पैकेज विकास पैकेज है और $ गतिविधि लॉन्च होने वाली गतिविधि (लॉन्चर गतिविधि) है।
मैं ऐसा करने के लिए एक बैश स्क्रिप्ट लिख रहा हूं , अन्य कुछ विशेषताओं के साथ।
एक और अधिक लचीला तरीका यह बंदर का उपयोग करके है:
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 की आवश्यकता नहीं है और 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
बॉक्स कार्यों से बाहर देखने में मददगार है - जिसमें इंस्टाल करना शामिल है (लेकिन जैसा कि नीचे बताया नहीं गया है)