यह मेरी पहली बार अपाचे कॉर्डोवा पर काम कर रहा है। मैंने checkStatus
नामक नमूना एप्लिकेशन बनाया है अब मैं एक हस्ताक्षरित एपीके फ़ाइल बनाना चाहता हूं। इसलिए मैं अपने परीक्षण के लिए विभिन्न उपकरणों में इसे स्थापित कर सकता हूं।
इसके लिए, मैं गोगल गया और यह दस्तावेज़ीकरण पाया।
दस्तावेज़ के अनुसार, मैंने अपनी प्रोजेक्ट डायरेक्टरी को स्विच किया और निम्नलिखित कमांड चलाया:
keytool -genkey -v -keystore key-name.keystore -alias alias-name -keyalg RSA -keysize 2048 -validity 10000
उपरोक्त आदेश को चलाने के बाद, मुझे projectRoot/key-name.keystore
। key-name.keystore
पर key-name.keystore
नाम नाम की एक फ़ाइल projectRoot/key-name.keystore
।
और फिर मैंने उस फ़ाइल को projectRoot/platforms/android/key-name.keystore
में कॉपी और चिपकाया।
इसके बाद, मैंने ant.properties
नामक एक फ़ाइल बनाई और इसे projectRoot/platforms/android
में सहेज दिया projectRoot/platforms/android
मैंने फाइल के अंदर निम्नलिखित कोड लिखा था:
key.store=projectRoot/key-name.keystore key.alias=myApp
उसके बाद, मैं रिलीज़ करने के लिए निम्न कमांड चलाया
Cordova builds android --release
यह निम्न त्रुटि फेंक रहा है:
/home/projectRoot/platforms/android/cordova/node_modules/q/q.js:126 throw e; ^ Error code 1 for command: ant with args: release,-f,/home/projectRoot/platforms/android/build.xml,-Dout.dir=ant-build,-Dgen.absolute.dir=ant-gen Error: /home/projectRoot/platforms/android/cordova/build: Command failed with exit code 8 at ChildProcess.whenDone (/usr/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:135:23) at ChildProcess.EventEmitter.emit (events.js:98:17) at maybeClose (child_process.js:753:16) at Process.ChildProcess._handle.onexit (child_process.js:820:5)
तो इस बार, मैंने key.store
संशोधित किया। ant.properties
फ़ाइल में ant.properties
मूल्य जैसे कि निम्नलिखित तरीके से।
key.store=/home/projectRoot/platforms/android/key-name.keystore
दोबारा, मैंने cordova build android --release
आदेश दिया – cordova build android --release
कमांड यह उसी त्रुटि को फेंकता है
क्या कोई मुझे बता सकता है कि मैंने क्या किया है?
D:\projects\Phonegap\Example> cordova plugin rm org.apache.cordova.console --save
--save
जोड़ें ताकि यह config.xml
फ़ाइल से प्लग-इन को निकाल दे।
एंड्रॉइड के लिए रिलीज़ बिल्ड बनाने के लिए, हमें सबसे पहले प्लेटफ़ॉर्म / एंड्रॉइड में मिली AndroidManifest.xml
फ़ाइल में एक छोटा परिवर्तन करना होगा। फ़ाइल संपादित करें और पंक्ति को परिवर्तित करें:
<application android:debuggable="true" android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name">
और android:debuggable
बदलें android:debuggable
false
करने android:debuggable
है:
<application android:debuggable="false" android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name">
कॉर्डोवा 6.2.0 के अनुसार एंड्रॉइड हटाएं: डीबगेज टैग पूरी तरह से। कॉर्डोवा से स्पष्टीकरण दिया गया है:
"हार्डकॉडेड डिब्यूबोडोड" प्रकार के मुद्दों के लिए स्पष्टीकरण: एंड्रॉइड को छोड़ना सबसे अच्छा है: मैनिफेस्ट से डिबग करने योग्य विशेषता। यदि आप करते हैं, तो उपकरण स्वचालित रूप से एंड्रॉइड डालेंगे: डीबगएबल = सही जब किसी एपल्यूलेटर या डिवाइस पर डीबग करने के लिए एपीके का निर्माण करते हैं। और जब आप रिलीज़ बिल्ड करते हैं, जैसे कि एपीके निर्यात करना, तो वह इसे स्वचालित रूप से झूठे में सेट कर देगा।
दूसरी तरफ अगर आप मैनिफ़ेस्ट फ़ाइल में एक विशिष्ट मान निर्दिष्ट करते हैं, तो उपकरण हमेशा इसका उपयोग करेंगे इससे गलती से आपके ऐप को डीबग जानकारी के साथ प्रकाशित कर सकते हैं।
अब हम कॉरडोवा को हमारे रिलीज बिल्ड को उत्पन्न करने के लिए कह सकते हैं:
D:\projects\Phonegap\Example> cordova build --release android
फिर, हम platforms/android/ant-build
में हमारी अहस्ताक्षरित एपीके फ़ाइल पा सकते हैं। हमारे उदाहरण में, फ़ाइल platforms/android/ant-build/Example-release-unsigned.apk
नोट: यदि आप किसी और को बनाना चाहते हैं, तो कृपया निम्नलिखित चरणों के साथ आगे बढ़ें: हम इस जीआईटी रिपो में हमारे मुख्यस्टोअर कीस्टोर keystoreNAME-mobileapps.keystore
है।
keytool -genkey -v -keystore <keystoreName>.keystore -alias <Keystore AliasName> -keyalg <Key algorithm> -keysize <Key size> -validity <Key Validity in Days>
keytool -genkey -v -keystore NAME-mobileapps.keystore -alias NAMEmobileapps -keyalg RSA -keysize 2048 -validity 10000 keystore password? : xxxxxxx What is your first and last name? : xxxxxx What is the name of your organizational unit? : xxxxxxxx What is the name of your organization? : xxxxxxxxx What is the name of your City or Locality? : xxxxxxx What is the name of your State or Province? : xxxxx What is the two-letter country code for this unit? : xxx
फिर कुंजी स्टोर को NAME-mobileapps.keystore नाम से बनाया गया है
उत्पन्न कुंजीस्टोर को इसमें रखें
पुराने संस्करण कॉर्डोबा
D:\projects\Phonegap\Example\platforms\android\ant-build
नया संस्करण कॉर्डोवा
D:\projects\Phonegap\Example\platforms\android\build\outputs\apk
अहस्ताक्षरित APK पर हस्ताक्षर करने के लिए, jarsigner उपकरण चलाएं जो कि जेडीके में भी शामिल है:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <keystorename <Unsigned APK file> <Keystore Alias name>
D:\projects\Phonegap\Example\platforms\android\ant-build> jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore NAME-mobileapps.keystore Example-release-unsigned.apk xxxxxmobileapps
या
D:\projects\Phonegap\Example\platforms\android\build\outputs\apk> jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore NAME-mobileapps.keystore Example-release-unsigned.apk xxxxxmobileapps Enter KeyPhrase as 'xxxxxxxx'
यह जगह में एपीके संकेत देता है
अंत में, हमें एपीके को अनुकूलित करने के लिए ज़िप संरेखण उपकरण को चलाने की आवश्यकता है:
D:\projects\Phonegap\Example\platforms\android\ant-build> zipalign -v 4 Example-release-unsigned.apk Example.apk
या
D:\projects\Phonegap\Example\platforms\android\ant-build> C:\Phonegap\adt-bundle-windows-x86_64-20140624\sdk\build-tools\android-4.4W\zipalign -v 4 Example-release-unsigned.apk Example.apk
या
D:\projects\Phonegap\Example\platforms\android\build\outputs\apk> C:\Phonegap\adt-bundle-windows-x86_64-20140624\sdk\build-tools\android-4.4W\zipalign -v 4 Example-release-unsigned.apk Example.apk
अब हमारे पास हमारी अंतिम रिलीज़ बाइनरी है जिसे example.apk कहा जाता है और हम इसे Google Play Store पर रिलीज कर सकते हैं।
कॉर्डोवा 4 (और बाद में) के लिए @मलक्यूबिएर के लिए एक अपडेट –
APPFOLDER\platforms\android
नामक फ़ाइल बनाएं और APPFOLDER\platforms\android
फ़ोल्डर में डाल APPFOLDER\platforms\android
फ़ाइल की सामग्री: 2 के बाद संपादित करें = 2 लाइन के अलावा सभी के लिए
storeFile=C:/yourlocation/app.keystore storeType=jks keyAlias=aliasname keyPassword=aliaspass storePassword=password
फिर इस कमांड को रिलीज़ संस्करण बनाना चाहिए:
cordova build android --release
वर्तमान दस्तावेज में हम एक keystore के साथ build.json निर्दिष्ट कर सकते हैं:
{ "android": { "debug": { "keystore": "..\android.keystore", "storePassword": "android", "alias": "mykey1", "password" : "password", "keystoreType": "" }, "release": { "keystore": "..\android.keystore", "storePassword": "", "alias": "mykey2", "password" : "password", "keystoreType": "" } } }
और फिर, कमांडो को –buildConfig तर्क के साथ निष्पादित करें, इस तरह:
cordova run android --buildConfig
चरण 1:
cordova\platforms\android
चींटी पर ant.properties
फाइल जानकारी के साथ ant.properties
फ़ाइल नामक एक फ़ाइल बनाएँ (यह कीस्टोर अपने पसंदीदा एंड्रॉइड एसडीके, स्टूडियो … से उत्पन्न हो सकती है):
key.store=C:\\yourpath\\Yourkeystore.keystore key.alias=youralias
चरण 2:
कॉर्डोबा पथ पर जाएं और निष्पादित करें:
cordova build android --release
नोट: आपको अपने कुंजीस्टोर और कुंजी पासवर्ड पूछने के लिए प्रेरित किया जाएगा
आपका ऐप- release.apk \cordova\platforms\android\ant-build
में दिखाई देगा
कॉर्डोबा 6.2.0 में , रिलीज बिल्ड बनाने के लिए इसका एक आसान तरीका है। यहां दिए गए अन्य चरणों का उल्लेख चरण 1, 2 और 4
cd cordova/ #change to root cordova folder platforms/android/cordova/clean #clean if you want cordova build android --release -- --keystore="/path/to/keystore" --storePassword=password --alias=alias_name #password will be prompted if you have any
मैक (ओएसएक्स) पर, मैंने दो .sh फाइलें उत्पन्न कीं, पहला प्रकाशन के लिए एक और अपडेट करने के लिए दूसरा एक:
#!/bin/sh echo "Ionic to Signed APK ---- b@agencys.eu // Benjamin Rathelot\n" printf "Project dir : " read DIR printf "Project key alias : " read ALIAS cd $DIR/ cordova build --release android cd platforms/android/build/outputs/apk/ keytool -genkey -v -keystore my-release-key.keystore -alias $ALIAS -keyalg RSA -keysize 2048 -validity 10000 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore android-release-unsigned.apk $ALIAS zipalign -v 4 android-release-unsigned.apk signedApk.apk
और अपने ऐप को अपडेट करने के लिए:
#!/bin/sh echo "Ionic to Signed APK ---- b@agencys.eu // Benjamin Rathelot\n" printf "Project dir : " read DIR printf "Project key alias : " read ALIAS cd $DIR/ cordova build --release android cd platforms/android/build/outputs/apk/ rm signedApk.apk jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore android-release-unsigned.apk $ALIAS zipalign -v 4 android-release-unsigned.apk signedApk.apk
यह मानते हुए कि आप अपने होम फोल्डर में हैं या अपने ऐप फ़ोल्डरों को टॉप करने वाले फ़ोल्डर हैं। इस स्क्रिप्ट का उपयोग करने के लिए सही ढंग से chmod सेट करना सुनिश्चित करें फिर :
./ionicToApk.sh # or whatever depending of the name of your file, in CLI
आपका हस्ताक्षरित एपीके आपके ऐप फ़ोल्डर / प्लेटफॉर्म्स / एंड्रॉइड / बिल्ड / आउटपुट / एपीके / SignedApk.apk में होगा, पहले स्क्रिप्ट के साथ सही कुंजी उपनाम और पासवर्ड परिभाषित करना सुनिश्चित करें
यदि आप अपना ऐप अपडेट कर रहे हैं तो पहले अपने संस्करण कोड और संस्करण का नाम देखें और सुनिश्चित करें कि आपके पास पिछले कीस्टोर है
यदि आप ऐप अद्यतन कर रहे हैं तो चरण 1,3,4 का अनुसरण करें
हमारे रिलीज बिल्ड को बनाने के लिए आपके कॉर्डोवा परियोजना पर जाएँ:
D:\projects\Phonegap\Example> cordova build --release android
फिर, हम प्लेटफॉर्म्स / एंड्रॉइड / एंट-बिल्ड में हमारी अहस्ताक्षरित एपीके फ़ाइल पा सकते हैं। हमारे उदाहरण में, फ़ाइल थी
अगर यू ने एंट-बिल्ड का इस्तेमाल किया
yourproject/platforms/android/ant-build/Example-release-unsigned.apk
या
अगर यू ने ग्रेडेल-बिल्ड का उपयोग किया
yourProject/platforms/android/build/outputs/apk/Example-release-unsigned.apk
keytool -genkey -v -keystore <keystoreName>.keystore -alias <Keystore AliasName> -keyalg <Key algorithm> -keysize <Key size> -validity <Key Validity in Days>
यदि keytool आदेश इस चरण को पहचान नहीं सकता है
जाँच करें कि कुंजीटोल निष्पादन योग्य निर्देशिका में आपके पथ पर है। (उदाहरण के लिए, मेरे विंडोज 7 मशीन पर, यह सी में है: \ प्रोग्राम फ़ाइलें (x86) \ जावा \ जेआर 6 \ bin।)
keytool -genkey -v -keystore NAME-mobileapps.keystore -alias NAMEmobileapps -keyalg RSA -keysize 2048 -validity 10000 keystore password? : xxxxxxx What is your first and last name? : xxxxxx What is the name of your organizational unit? : xxxxxxxx What is the name of your organization? : xxxxxxxxx What is the name of your City or Locality? : xxxxxxx What is the name of your State or Province? : xxxxx What is the two-letter country code for this unit? : xxx
फिर कुंजी स्टोर को NAME-mobileapps.keystore नाम से बनाया गया है
डी: \ परियोजनाओं \ फोनगैप \ उदाहरण \ प्लेटफार्मों \ एंड्रॉइड \ चींटी-बिल्ड में जेनरेट कीस्टस्टोर को रखें
अहस्ताक्षरित APK पर हस्ताक्षर करने के लिए, jarsigner उपकरण चलाएं जो कि जेडीके में भी शामिल है:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <keystorename <Unsigned APK file> <Keystore Alias name>
अगर यह इन चरणों को दोबारा नहीं करता है
(1) "यह पीसी" पर राइट क्लिक करें> राइट-क्लिक करें गुण> उन्नत सिस्टम सेटिंग्स> पर्यावरण चर> फिर पैट चुनें चुनें।
(2) पर्यावरण चर के लिए अपने jdk bin फ़ोल्डर पथ जोड़ें, यह इस तरह दिखना चाहिए:
"सी: \ प्रोग्राम फ़ाइलें \ जावा \ jdk1.8.0_40 \ bin"।
D:\projects\Phonegap\Example\platforms\android\ant-build> jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore NAME-mobileapps.keystore Example-release-unsigned.apk xxxxxmobileapps Enter KeyPhrase as 'xxxxxxxx'
यह जगह में एपीके संकेत देता है
अंत में, हमें एपीके को अनुकूलित करने के लिए ज़िप संरेखन उपकरण चलाने की जरूरत है:
अगर zipalign फिर पहचान नहीं है
(1) अपने एंड्रॉइड एसडीके पथ को प्राप्त करें और ज़िप-साइनइन को ढूंढें यह आमतौर पर एंड्रॉइड-एसडीके \ बिल्ड-टूल्स \ 23.0.3 में है
(2) अपने जनरेटेड रिलीज एपीके फ़ोल्डर में पेस्ट कॉपी करें
/ उदाहरण रिलीज-unsigned.apk yourproject / प्लेटफार्मों / एंड्रॉयड / चींटी-निर्माण
D:\projects\Phonegap\Example\platforms\android\ant-build> zipalign -v 4 Example-release-unsigned.apk Example.apk
या
D:\projects\Phonegap\Example\platforms\android\ant-build> C:\Phonegap\adt-bundle-windows-x86_64-20140624\sdk\build-tools\android-4.4W\zipalign -v 4 Example-release-unsigned.apk Example.apk
अब हमारे पास हमारी अंतिम रिलीज़ बाइनरी है जिसे example.apk कहा जाता है और हम इसे Google Play Store पर रिलीज कर सकते हैं।