स्वीकृत उत्तर प्रोजेक्ट को उसी रूट फ़ोल्डर में रहने वाले एपीके पर हस्ताक्षर करने के लिए किस कीस्टॉर का उपयोग करने के लिए नियंत्रित करने के लिए एक फ़ाइल का उपयोग करता है। जब हम जीआईटी जैसे वीक्स का उपयोग कर रहे हैं , तो एक बुरी बात हो सकती है जब हम सूची को अनदेखा करने के लिए गुण फ़ाइल जोड़ना भूल जाते हैं। क्योंकि हम अपने पासवर्ड का खुलासा दुनिया के सामने करेंगे। समस्याएं अभी भी कायम हैं।
हमारी परियोजना के भीतर एक ही निर्देशिका में गुण फ़ाइल बनाने के बजाय, हमें इसे बाहर करना चाहिए। हम इसे gradle.properties फ़ाइल का उपयोग करके बाहर बनाते हैं।
यहाँ कदम हैं:
1. अपने रूट प्रोजेक्ट पर विस्तार करें या gradle.properties बनाएँ और निम्नलिखित कोड जोड़ें, अपने साथ पथ संपादित करना याद रखें:
AndroidProject.signing=/your/path/androidproject.properties
2.Create androidproject.properties में / अपने / पथ / और इसके लिए निम्न कोड जोड़ें, अपने keystore पथ में /your/path/to/android.keystore बदलना न भूलें:
STORE_FILE=/your/path/to/android.keystore
STORE_PASSWORD=yourstorepassword
KEY_ALIAS=yourkeyalias
KEY_PASSWORD=yourkeypassword
3. अपने ऐप मॉड्यूल में बिल्ड.ग्रेडल (आपकी परियोजना रूट बिल्ड बिल्ड नहीं है ।ग्रेड) मौजूद नहीं है या इसके लिए समायोजित होने पर निम्न कोड जोड़ें:
signingConfigs {
release
}
buildTypes {
debug {
debuggable true
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
4. चरण 3 में कोड के नीचे निम्नलिखित कोड जोड़ें:
if (project.hasProperty("AndroidProject.signing")
&& new File(project.property("AndroidProject.signing").toString()).exists()) {
def Properties props = new Properties()
def propFile = new File(project.property("AndroidProject.signing").toString())
if(propFile.canRead()) {
props.load(new FileInputStream(propFile))
if (props!=null && props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') &&
props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) {
android.signingConfigs.release.storeFile = file(props['STORE_FILE'])
android.signingConfigs.release.storePassword = props['STORE_PASSWORD']
android.signingConfigs.release.keyAlias = props['KEY_ALIAS']
android.signingConfigs.release.keyPassword = props['KEY_PASSWORD']
} else {
println 'androidproject.properties found but some entries are missing'
android.buildTypes.release.signingConfig = null
}
} else {
println 'androidproject.properties file not found'
android.buildTypes.release.signingConfig = null
}
}
यह कोड चरण 1 से gradro.properties में AndroidProject.signing संपत्ति के लिए खोज करेगा । यदि संपत्ति मिली, तो यह संपत्ति के मूल्य को फ़ाइल पथ के रूप में अनुवादित करेगा जो androidproject.properties को इंगित करता है जो हम चरण 2 में बनाते हैं । तब इसमें से सभी संपत्ति मूल्य का उपयोग हमारे बिल्ड.ग्रेड के लिए कॉन्फ़िगरेशन साइनिंग के रूप में किया जाएगा।
अब हमें अपने कीस्टोर पासवर्ड को उजागर करने के जोखिम के बारे में फिर से चिंता करने की आवश्यकता नहीं है।
Build.gradle में keystore की जानकारी डाले बिना Android APK साइनिंग पर अधिक पढ़ें
build.gradle
, तो आपके पास इसके अलावा कुछ और होना चाहिएbuild.gradle
, क्या यह पर्यावरण चर (प्रति एक उत्तर), एक गुण फ़ाइल (एक अन्य उत्तर के अनुसार), या कुछ अन्य साधनों के लिए एक समायोजन है। यदि आप बाहर की चीजों को करने के लिए तैयार नहीं हैंbuild.gradle
, तो परिभाषा के अनुसार सभी हस्ताक्षरित जानकारी अंदर होनी चाहिएbuid.gradle
।