android - कॉर्डोवा कमांड लाइन इंटरफ़ेस का उपयोग करके एक हस्ताक्षरित एपीके फ़ाइल कैसे बनाएं?




cordova ant (7)

चरण 1:

D:\projects\Phonegap\Example> cordova plugin rm org.apache.cordova.console --save

- --save जोड़ें ताकि वह config.xml फ़ाइल से प्लगइन को हटा दे।

चरण 2:

Android के लिए रिलीज़ बिल्ड बनाने के लिए, हमें सबसे पहले प्लेटफार्मों / Android में पाए जाने वाले AndroidManifest.xml फ़ाइल में एक छोटा सा बदलाव करने की आवश्यकता है। फ़ाइल संपादित करें और लाइन बदलें:

<application android:debuggable="true" android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name">

और android:debuggable बदलें android:debuggable करने android:debuggable false :

<application android:debuggable="false" android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name">

कॉर्डोवा के रूप में 6.2.0 एंड्रॉइड को हटा दें: डीबग करने योग्य टैग पूरी तरह से। यहाँ कॉर्डोवा से स्पष्टीकरण दिया गया है:

"हार्डकोडेडबग्मोड" प्रकार के मुद्दों के लिए स्पष्टीकरण: यह एंड्रॉइड को छोड़ने के लिए सबसे अच्छा है: प्रकट से डीबग करने योग्य विशेषता। यदि आप करते हैं, तो उपकरण स्वचालित रूप से एंड्रॉइड डालेंगे: डीबग करने योग्य = सच जब एक एमुलेटर या डिवाइस पर डीबग करने के लिए एपीके का निर्माण करना। और जब आप कोई रिलीज़ बिल्ड बनाते हैं, जैसे कि एक्सपोर्ट एपीके, तो यह स्वचालित रूप से गलत पर सेट हो जाएगा।

यदि दूसरी ओर आप मैनिफ़ेस्ट फ़ाइल में एक विशिष्ट मान निर्दिष्ट करते हैं, तो उपकरण हमेशा इसका उपयोग करेंगे। यह डिबग जानकारी के साथ गलती से आपके ऐप को प्रकाशित कर सकता है।

चरण 3:

अब हम कॉर्डोवा को हमारी रिलीज़ बिल्ड बनाने के लिए कह सकते हैं:

D:\projects\Phonegap\Example> cordova build --release android

फिर, हम platforms/android/ant-build में अपनी अहस्ताक्षरित एपीके फ़ाइल पा सकते हैं। हमारे उदाहरण में, फ़ाइल platforms/android/ant-build/Example-release-unsigned.apk

चरण 4:

नोट: हमारे पास इस Git रेपो में हमारे कीस्टोर 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 नाम से जनरेट किया गया है

चरण 5:

उत्पन्न कीस्टोर को अंदर रखें

पुराने संस्करण कॉर्डोवा

D:\projects\Phonegap\Example\platforms\android\ant-build

नया संस्करण कॉर्डोबा

D:\projects\Phonegap\Example\platforms\android\build\outputs\apk

अहस्ताक्षरित एपीके पर हस्ताक्षर करने के लिए, JarsKer टूल को चलाएं जो कि JDK में भी शामिल है:

वाक्य - विन्यास:

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'

यह जगह में apk पर हस्ताक्षर करता है।

चरण 6:

अंत में, हमें एपीके को ऑप्टिमाइज़ करने के लिए जिप अलाइन टूल को चलाना होगा:

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 पर जारी कर सकते हैं।

मैंने checkStatus नाम का एक नमूना आवेदन किया। अब मैं एक हस्ताक्षरित एपीके फ़ाइल बनाना चाहता हूं। इसलिए मैं इसे अपने परीक्षण के लिए विभिन्न उपकरणों में स्थापित कर सकता हूं।

इसके लिए, मैंने Googled और यह documentation पाया।

दस्तावेज़ के अनुसार, मैंने अपनी परियोजना निर्देशिका पर स्विच किया और निम्न आदेश चलाया:

keytool -genkey -v -keystore key-name.keystore -alias alias-name -keyalg RSA -keysize 2048 -validity 10000

उपरोक्त कमांड चलाने के बाद, मुझे projectRoot/key-name.keystore पर key-name.keystore नाम की एक फाइल projectRoot/key-name.keystore

और फिर मैंने उस फाइल को projectRoot/platforms/android/key-name.keystore में कॉपी-पेस्ट किया।

उसके बाद, मैंने ant.properties नाम की एक फ़ाइल बनाई और इसे 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)

इसलिए इस बार, मैंने निम्नलिखित तरीके से ant.properties फ़ाइल में ant.properties मान को संशोधित किया।

 key.store=/home/projectRoot/platforms/android/key-name.keystore

फिर से, मैंने cordova build android --release कमांड cordova build android --release । यह एक ही त्रुटि फेंकता है।

क्या कोई मुझे बता सकता है कि मैंने क्या गलत किया है?


Cmd में कॉर्डोवा रिलीज़ एपीके फ़ाइल बनाएँ।

प्रमुख चरण फ़ाइल पथ: कीस्टर फ़ाइल पथ (F: / cordova/myApp/xxxxx.jds)

प्रमुख स्टोर पासवर्ड : xxxxx

कुंजी स्टोर उपनाम : xxxxx

प्रमुख स्टोर ALIAS पासवर्ड : xxxxx

ZPLign.exe का पथ : zipalign.exe फ़ाइल पथ (C: \ Users \ xxxx \ AppData \ Local \ Android \ sdk \ build-tools \ 25.0.2 \ zipalign)

ANDROID UNSIGNED APK NAME : Android-release-unsigned.apk

ANDROID RELEASE APK NAME : android-release.apk

Cmd में चरणों के नीचे चलाएँ (व्यवस्थापक के रूप में चलाएँ)

  1. cordova build --release android
  2. एंड्रॉइड-रिलीज़-अहस्ताक्षरित.पेक फ़ाइल स्थान पर जाएं (PROJECT \ प्लेटफार्मों \ android \ build \ outputs \ एपीके)
  3. jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -Stystore < KEY STORE FILE PATH > < ANDROID UNSIGNED APK NAME > < STORE ALIAS >
  4. < PATH OF zipalign.exe > -v 4 < ANDROID UNSIGNED APK NAME > < ANDROID RELEASE APK NAME >

मैक (ओएक्सएक्स) पर, मैंने दो .sh फाइलें बनाईं, पहला प्रकाशन के लिए और दूसरा अपडेट करने के लिए:

#!/bin/sh
echo "Ionic to Signed APK ---- [email protected] // 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 ---- [email protected] // 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

यह मानते हुए कि आप अपने होम फोल्डर या फोल्डर में हैं, जो आपके एप्स फोल्डर में सबसे ऊपर है। सुनिश्चित करें कि इस स्क्रिप्ट का उपयोग करने के लिए सही ढंग से सेटमॉड सेट करें। फिर :

./ionicToApk.sh # or whatever depending of the name of your file, in CLI

आपका हस्ताक्षरित एपीके आपके ऐप फ़ोल्डर / प्लेटफार्मों / एंड्रॉइड / बिल्ड / आउटपुट / एपीके में होगा / जैसा कि SignedApk.apk पहले स्क्रिप्ट के साथ परिभाषित सही कुंजी उपनाम और पासवर्ड का उपयोग करना सुनिश्चित करें


यदि आप अपना ऐप अपडेट कर रहे हैं तो सबसे पहले अपने वर्जन कोड और वर्जन का नाम चेक करें। और सुनिश्चित करें कि आपके पास पहले कीस्टॉर है।

अगर आप ऐप अपडेट कर रहे हैं तो 1,3,4 का पालन करें।

चरण 1:

हमारी रिलीज़ बिल्ड जनरेट करने के लिए अपना कॉर्डोवा प्रोजेक्ट गोटो:

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>

चरण 2:

मुख्य पीढ़ी:

वाक्य - विन्यास:

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

अगर keytool कमांड इस कदम को नहीं पहचानती है

जाँच करें कि कीटलूल निष्पादन योग्य निर्देशिका आपके पथ पर है। (उदाहरण के लिए, मेरी विंडोज 7 मशीन पर, यह C: \ Program Files (x86) \ Java \ jre6 \ bin में है।)

उदाहरण:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <keystorename <Unsigned APK file> <Keystore Alias name>

फिर कुंजी स्टोर को NAME-mobileapps.keystore नाम से जनरेट किया गया है

चरण 3:

डी: \ परियोजनाओं \ Phonegap \ Example \ प्लेटफार्मों \ android \ ant-build में उत्पन्न कीस्टोर रखें

अहस्ताक्षरित एपीके पर हस्ताक्षर करने के लिए, JarsKer टूल को चलाएं जो कि JDK में भी शामिल है:

वाक्य - विन्यास:

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'

यदि यह इन चरणों को शामिल नहीं करता है

(1) "इस पीसी" पर राइट क्लिक करें> राइट-क्लिक प्रॉपर्टीज> एडवांस्ड सिस्टम सेटिंग्स> एनवायरमेंट वेरिएबल्स> PATH उसके बाद EDIT चुनें।

(2) पर्यावरण चर के लिए अपने jdk बिन फ़ोल्डर पथ जोड़ें, यह इस तरह दिखना चाहिए:

"C: \ Program Files \ Java \ jdk1.8.0_40 \ bin"।

उदाहरण:

D:\projects\Phonegap\Example\platforms\android\ant-build> zipalign -v 4 Example-release-unsigned.apk Example.apk 

यह जगह में apk पर हस्ताक्षर करता है।

चरण 4:

अंत में, हमें एपीके को ऑप्टिमाइज़ करने के लिए जिप अलाइन टूल को चलाना होगा:

अगर zeepign पहचान नहीं है तो

(1) अपने एंड्रॉइड sdk पथ को मिलाएं और यह खोजें कि यह आमतौर पर android-sdk \ build-tools-233.3 में है

(2) आमतौर पर नीचे दिए गए पथ में अपनी रिलीज़ रिलीज़ apk फ़ोल्डर में zipalign फ़ाइल पेस्ट कॉपी करें

yourproject / प्लेटफार्मों / एंड्रॉयड / चींटी-निर्माण / उदाहरण रिलीज-unsigned.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

या

##Generated signed apk from commandline
#variables
APP_NAME=THE_APP_NAME
APK_LOCATION=./
APP_HOME=/path/to/THE_APP
APP_KEY=/path/to/Android_key
APP_KEY_ALIAS=the_alias
APP_KEY_PASSWORD=123456789
zipalign=$ANDROID_HOME/build-tools/28.0.3/zipalign

#the logic
cd $APP_HOME
cordova build --release android
cd platforms/android/app/build/outputs/apk/release
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore $APP_KEY ./app-release-unsigned.apk $APP_KEY_ALIAS <<< $APP_KEY_PASSWORD
rm -rf "$APK_LOCATION/$APP_NAME.apk"
$zipalign -v 4 ./app-release-unsigned.apk "$APK_LOCATION/$APP_NAME.apk"
open $APK_LOCATION
#the end

अब हमारे पास हमारी अंतिम रिलीज़ बाइनरी है जिसे example.apk कहा जाता है और हम इसे Google Play Store पर जारी कर सकते हैं।


विंडोज के लिए, मैंने एक build.cmd फ़ाइल बनाई है:

(कीस्टोर पथ और उर्फ ​​की जगह)

कॉर्डोवा के लिए:

@echo off 
set /P spassw="Store Password: " && set /P kpassw="Key Password: " && cordova build android --release -- --keystore=../../local/my.keystore --storePassword=%spassw% --alias=tmpalias --password=%kpassw%

और आयनिक के लिए:

@echo off 
set /P spassw="Store Password: " && set /P kpassw="Key Password: " && ionic build --prod && cordova build android --release -- --keystore=../../local/my.keystore --storePassword=%spassw% --alias=tmpalias --password=%kpassw%

इसे ptoject की डायरेक्टरी में सेव करें, आप इसे cmd से डबल क्लिक या ओपन कर सकते हैं।


कॉर्डोवा 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

D:\projects\Phonegap\Example> cordova build --release android




ant