Android OS इमेज, क्रिप्टोग्राफ़िक हस्ताक्षर का इस्तेमाल दो जगहों पर करती हैं:
- इमेज में मौजूद हर
.apk
फ़ाइल पर हस्ताक्षर होना चाहिए. Android की पैकेज मैनेजर,.apk
सिग्नेचर का इस्तेमाल दो तरीकों से करता है:- जब किसी ऐप्लिकेशन को बदला जाता है, तो पुराने ऐप्लिकेशन के डेटा को ऐक्सेस करने के लिए, उस पर उसी कुंजी से हस्ताक्षर किया जाना चाहिए जिससे पुराने ऐप्लिकेशन पर हस्ताक्षर किया गया था. यह बात,
.apk
को ओवरराइट करके उपयोगकर्ता के ऐप्लिकेशन अपडेट करने और/data
के तहत इंस्टॉल किए गए नए वर्शन के साथ सिस्टम ऐप्लिकेशन को बदलने, दोनों के लिए सही है. - अगर दो या उससे ज़्यादा ऐप्लिकेशन को उपयोगकर्ता आईडी शेयर करना है, ताकि वे डेटा वगैरह शेयर कर सकें, तो उन पर एक ही पासकोड से साइन किया जाना चाहिए.
- जब किसी ऐप्लिकेशन को बदला जाता है, तो पुराने ऐप्लिकेशन के डेटा को ऐक्सेस करने के लिए, उस पर उसी कुंजी से हस्ताक्षर किया जाना चाहिए जिससे पुराने ऐप्लिकेशन पर हस्ताक्षर किया गया था. यह बात,
- ओटीए अपडेट पैकेज पर, सिस्टम की ज़रूरी शर्तों के मुताबिक किसी एक कुंजी से हस्ताक्षर किया जाना चाहिए. ऐसा न करने पर, इंस्टॉलेशन की प्रोसेस उन्हें अस्वीकार कर देगी.
रिलीज़ बटन
Android ट्री में, build/target/product/security
में test-keys शामिल हैं. Android OS की इमेज बनाना
का उपयोग करने से make
सभी .apk
फ़ाइलों को
टेस्ट-की. जांच-कुंजियों की जानकारी सभी को होती है, इसलिए कोई भी व्यक्ति अपने हस्ताक्षर कर सकता है
एक जैसी कुंजियों वाली .apk फ़ाइलें, जिनसे उन्हें सिस्टम बदलने या हाइजैक करने की अनुमति मिल सकती है
आपके ओएस की इमेज में पहले से मौजूद ऐप्लिकेशन. इसलिए, सार्वजनिक तौर पर रिलीज़ की गई या डिप्लॉय की गई किसी भी Android OS इमेज पर, रिलीज़-की के खास सेट से हस्ताक्षर करना ज़रूरी है. इस सेट का ऐक्सेस सिर्फ़ आपके पास होना चाहिए.
अपने हिसाब से रिलीज़-की का यूनीक सेट जनरेट करने के लिए, इन कमांड को यहां से चलाएं अपने Android ट्री का रूट डालें:
subject='/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
mkdir ~/.android-certs
for x in releasekey platform shared media networkstack; do \ ./development/tools/make_key ~/.android-certs/$x "$subject"; \ done
आपके संगठन की जानकारी दिखाने के लिए, $subject
को बदला जाना चाहिए
जानकारी. आपके पास किसी भी डायरेक्ट्री का इस्तेमाल करने का विकल्प है. हालांकि, ध्यान रखें कि आप ऐसी जगह चुनें जिसका बैक अप लिया गया हो और जो सुरक्षित हो. कुछ वेंडर, एन्क्रिप्ट (सुरक्षित) करने का विकल्प चुनते हैं
और एन्क्रिप्ट (सुरक्षित) की गई कुंजी को सेव करके, मज़बूत लंबे पासवर्ड (लंबे पासवर्ड) के साथ सुरक्षित रखें
सोर्स कंट्रोल में है; कुछ अन्य लोग अपनी रिलीज़ कुंजियों को पूरी तरह से कहीं और सेव कर देते हैं,
जैसे कि किसी एयर-गैप किए गए कंप्यूटर पर.
रिलीज़ इमेज जनरेट करने के लिए, इनका इस्तेमाल करें:
make dist
sign_target_files_apks \ -o \ # explained in the next section --default_key_mappings ~/.android-certs out/dist/*-target_files-*.zip \ signed-target_files.zip
sign_target_files_apks
स्क्रिप्ट, इनपुट के तौर पर टारगेट-फ़ाइलें.zip
लेती है और एक नई टारगेट-फ़ाइलें.zip
बनाती है. इसमें सभी .apk
फ़ाइलों पर नई कुंजियों से हस्ताक्षर किए गए होते हैं. हाल ही में साइन की गई इमेज, IMAGES/
में
signed-target_files.zip
में देखी जा सकती हैं.
ओटीए पैकेज पर हस्ताक्षर करना
साइन की गई टारगेट फ़ाइलों वाले ज़िप को हस्ताक्षर किए गए ओटीए अपडेट ज़िप में बदला जा सकता है नीचे दी गई प्रक्रिया का इस्तेमाल करें:
ota_from_target_files \
-k (--package_key)
signed-target_files.zip \
signed-ota_update.zip
हस्ताक्षर और अलग से लोड करना
साइडलोड करने से, रिकवरी के पैकेज के हस्ताक्षर की पुष्टि करने के सामान्य तरीके को बायपास नहीं किया जाता. किसी पैकेज को इंस्टॉल करने से पहले, रिकवरी यह पुष्टि करेगी कि उस पर हस्ताक्षर करने के लिए, रिकवरी पार्टिशन में सेव की गई सार्वजनिक कुंजियों से मेल खाने वाली निजी कुंजियों में से किसी एक का इस्तेमाल किया गया है. यह पुष्टि, ओवर-द-एयर डिलीवर किए गए पैकेज के लिए भी की जाती है.
मुख्य सिस्टम से मिले अपडेट पैकेज की पुष्टि आम तौर पर दो बार की जाती है:
एक बार मुख्य सिस्टम से,
RecoverySystem.verifyPackage()
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
विधि से और फिर फिर से
वापस पाना. RecoverySystem API, मुख्य सिस्टम में सेव की गई सार्वजनिक कुंजियों के आधार पर हस्ताक्षर की जांच करता है. यह जांच, डिफ़ॉल्ट रूप से /system/etc/security/otacerts.zip
फ़ाइल में की जाती है. रिकवरी, /res/keys
फ़ाइल में मौजूद रिकवरी पार्टीशन की रैम डिस्क में सेव की गई सार्वजनिक कुंजियों के हिसाब से हस्ताक्षर की जांच करती है.
डिफ़ॉल्ट रूप से, बिल्ड से बनाई गई टारगेट-फ़ाइलें .zip
, टेस्ट की से मैच करने के लिए ओटीए सर्टिफ़िकेट सेट करती हैं. रिलीज़ की गई इमेज पर, किसी दूसरे
सर्टिफ़िकेट का इस्तेमाल करना ज़रूरी है, ताकि डिवाइस सर्टिफ़िकेट की प्रामाणिकता की पुष्टि कर सकें
पैकेज अपडेट करें. -o
फ़्लैग को पास किया जा रहा है
जैसा कि पिछले सेक्शन में दिखाया गया है, sign_target_files_apks
आपके सर्टिफ़िकेट से मिले रिलीज़ पासकोड सर्टिफ़िकेट के साथ, टेस्ट पासकोड सर्टिफ़िकेट
डायरेक्ट्री.
आम तौर पर, सिस्टम इमेज और रिकवरी इमेज में, ओटीए के लिए एक ही सेट की सार्वजनिक कुंजियां सेव होती हैं. पासकोड के रिकवरी सेट में सिर्फ़ एक पासकोड जोड़कर, उन पैकेज पर साइन किया जा सकता है जिन्हें सिर्फ़ साइडलोडिंग की मदद से इंस्टॉल किया जा सकता है. ऐसा तब किया जा सकता है, जब मुख्य सिस्टम का अपडेट डाउनलोड करने का तरीका, otacerts.zip के हिसाब से सही तरीके से पुष्टि कर रहा हो. प्रॉडक्ट की परिभाषा में PRODUCT_EXTRA_RECOVERY_KEYS वैरिएबल सेट करके, सिर्फ़ रिकवरी में शामिल की जाने वाली अतिरिक्त कुंजियों की जानकारी दी जा सकती है:
vendor/yoyodyne/tardis/products/tardis.mk
[...] PRODUCT_EXTRA_RECOVERY_KEYS := vendor/yoyodyne/security/tardis/sideload
इसमें सार्वजनिक पासकोड शामिल है
vendor/yoyodyne/security/tardis/sideload.x509.pem
की रिकवरी
पासकोड फ़ाइल अपलोड करें, ताकि यह साइन किए हुए पैकेज इंस्टॉल कर सके
उसके साथ. हालांकि, अतिरिक्त कुंजी otacerts.zip में शामिल नहीं है, इसलिए
ऐसे सिस्टम जो डाउनलोड किए गए पैकेज को सही तरीके से सत्यापित करते हैं, वे
इस कुंजी से हस्ताक्षर किए गए पैकेज.
सर्टिफ़िकेट और निजी पासकोड
हर कुंजी दो फ़ाइलों में आती है: सर्टिफ़िकेट, जिसमें एक्सटेंशन .x509.pem और private key, जिसमें एक्सटेंशन .pk8 है. निजी कुंजी को गोपनीय रखा जाना चाहिए और पैकेज पर हस्ताक्षर करने के लिए इसकी ज़रूरत होती है. कुंजी पासवर्ड से सुरक्षित किया जा सकता है. इसके उलट, सर्टिफ़िकेट में पासकोड का सिर्फ़ सार्वजनिक हिस्सा होता है, ताकि इसे बड़े पैमाने पर डिस्ट्रिब्यूट किया जा सके. इसका इस्तेमाल, किसी पैकेज पर उससे जुड़ी निजी कुंजी से हस्ताक्षर किए जाने की पुष्टि करने के लिए किया जाता है.
स्टैंडर्ड Android बिल्ड में पांच कुंजियों का इस्तेमाल किया जाता है, जो सभी
build/target/product/security
में मौजूद होती हैं:
- testkey
- उन पैकेज के लिए सामान्य डिफ़ॉल्ट कुंजी जिनमें कोई कुंजी नहीं दी गई है.
- प्लेटफ़ॉर्म
- कोर प्लैटफ़ॉर्म के हिस्से के पैकेज के लिए टेस्ट पासकोड.
- शेयर किया गया
- होम/संपर्क प्रोसेस में शेयर की गई चीज़ों की जांच करने के लिए कुंजी.
- media
- ऐसे पैकेज के लिए जांच कुंजी जो मीडिया/डाउनलोड सिस्टम का हिस्सा हैं.
अलग-अलग पैकेज, LOCAL_CERTIFICATE सेट करके इनमें से किसी एक कुंजी के बारे में बताते हैं अपनी Android.mk फ़ाइल में सेव कर सकते हैं. (अगर यह वैरिएबल सेट नहीं है, तो testkey का इस्तेमाल किया जाता है.) आपने लोगों तक पहुंचाया मुफ़्त में पाथनाम से एक पूरी तरह से अलग कुंजी भी तय कर सकता है, उदाहरण:
device/yoyodyne/apps/SpecialApp/Android.mk
[...] LOCAL_CERTIFICATE := device/yoyodyne/security/special
अब बिल्ड, SpecialApp.apk को साइन करने के लिए, device/yoyodyne/security/special.{x509.pem,pk8}
बटन का इस्तेमाल करता है. बिल्ड में सिर्फ़ उन निजी कुंजियों का इस्तेमाल किया जा सकता है जिन्हें पासवर्ड से सुरक्षित नहीं किया गया हो.
साइनिंग के लिए बेहतर विकल्प
APK साइनिंग पासकोड बदलना
साइनिंग स्क्रिप्ट sign_target_files_apks
टारगेट पर काम करती है
बिल्ड के लिए जनरेट की गई फ़ाइलें हैं. टारगेट फ़ाइलों में, बिल्ड के समय इस्तेमाल किए गए सर्टिफ़िकेट और निजी 'की' की सारी जानकारी शामिल होती है. रिलीज़ के लिए हस्ताक्षर करने के लिए, साइनिंग स्क्रिप्ट को चलाते समय, साइनिंग पासकोड को पासकोड के नाम या APK के नाम के आधार पर बदला जा सकता है.
बटन के नाम के आधार पर बटन बदलने के लिए, --key_mapping
और --default_key_mappings
फ़्लैग का इस्तेमाल करें:
--key_mapping src_key=dest_key
फ़्लैग, एक बार में एक बटन के लिए बदलाव की जानकारी देता है.--default_key_mappings dir
फ़्लैग बताता है कि में सभी कुंजियों को बदलने के लिए पाँच कुंजियों वाली डायरेक्ट्रीbuild/target/product/security
; इसका मतलब है कि मैपिंग तय करने के लिए पांच बार--key_mapping
.
build/target/product/security/testkey = dir/releasekey build/target/product/security/platform = dir/platform build/target/product/security/shared = dir/shared build/target/product/security/media = dir/media build/target/product/security/networkstack = dir/networkstack
APK के नाम के आधार पर, साइनिंग पासकोड बदलने के लिए,
--extra_apks apk_name1,apk_name2,...=key
फ़्लैग का इस्तेमाल करें. अगर key
को खाली छोड़ा जाता है, तो स्क्रिप्ट, बताए गए APK को पहले से हस्ताक्षर किए गए APK के तौर पर मानती है.
काल्पनिक टारडिस प्रॉडक्ट के लिए, आपको पासवर्ड से सुरक्षित छह कुंजियों की ज़रूरत होगी:
build/target/product/security
में पांच की जगह पांच दबाने के लिए और एक
अतिरिक्त कुंजी device/yoyodyne/security/special
को बदलने के लिए
ऊपर दिए गए उदाहरण में SpecialApp के लिए ज़रूरी है. अगर कुंजियां इन जगहों में होती हैं
फ़ाइलें:
vendor/yoyodyne/security/tardis/releasekey.x509.pem vendor/yoyodyne/security/tardis/releasekey.pk8 vendor/yoyodyne/security/tardis/platform.x509.pem vendor/yoyodyne/security/tardis/platform.pk8 vendor/yoyodyne/security/tardis/shared.x509.pem vendor/yoyodyne/security/tardis/shared.pk8 vendor/yoyodyne/security/tardis/media.x509.pem vendor/yoyodyne/security/tardis/media.pk8 vendor/yoyodyne/security/tardis/networkstack.x509.pem vendor/yoyodyne/security/tardis/networkstack.pk8 vendor/yoyodyne/security/special.x509.pem vendor/yoyodyne/security/special.pk8 # NOT password protected vendor/yoyodyne/security/special-release.x509.pem vendor/yoyodyne/security/special-release.pk8 # password protected
इसके बाद, आपको सभी ऐप्लिकेशन को इस तरह से साइन करना होगा:
./build/make/tools/releasetools/sign_target_files_apks \
--default_key_mappings vendor/yoyodyne/security/tardis \
--key_mapping vendor/yoyodyne/security/special=vendor/yoyodyne/security/special-release \
--extra_apks PresignedApp= \
-o tardis-target_files.zip \
signed-tardis-target_files.zip
इससे ये चीज़ें दिखती हैं:
Enter password for vendor/yoyodyne/security/special-release key> Enter password for vendor/yoyodyne/security/tardis/networkstack key> Enter password for vendor/yoyodyne/security/tardis/media key> Enter password for vendor/yoyodyne/security/tardis/platform key> Enter password for vendor/yoyodyne/security/tardis/releasekey key> Enter password for vendor/yoyodyne/security/tardis/shared key> signing: Phone.apk (vendor/yoyodyne/security/tardis/platform) signing: Camera.apk (vendor/yoyodyne/security/tardis/media) signing: NetworkStack.apk (vendor/yoyodyne/security/tardis/networkstack) signing: Special.apk (vendor/yoyodyne/security/special-release) signing: Email.apk (vendor/yoyodyne/security/tardis/releasekey) [...] signing: ContactsProvider.apk (vendor/yoyodyne/security/tardis/shared) signing: Launcher.apk (vendor/yoyodyne/security/tardis/shared) NOT signing: PresignedApp.apk (skipped due to special cert string) rewriting SYSTEM/build.prop: replace: ro.build.description=tardis-user Eclair ERC91 15449 test-keys with: ro.build.description=tardis-user Eclair ERC91 15449 release-keys replace: ro.build.fingerprint=generic/tardis/tardis/tardis:Eclair/ERC91/15449:user/test-keys with: ro.build.fingerprint=generic/tardis/tardis/tardis:Eclair/ERC91/15449:user/release-keys signing: framework-res.apk (vendor/yoyodyne/security/tardis/platform) rewriting RECOVERY/RAMDISK/default.prop: replace: ro.build.description=tardis-user Eclair ERC91 15449 test-keys with: ro.build.description=tardis-user Eclair ERC91 15449 release-keys replace: ro.build.fingerprint=generic/tardis/tardis/tardis:Eclair/ERC91/15449:user/test-keys with: ro.build.fingerprint=generic/tardis/tardis/tardis:Eclair/ERC91/15449:user/release-keys using: vendor/yoyodyne/security/tardis/releasekey.x509.pem for OTA package verification done.
पासवर्ड से सुरक्षित की गई सभी कुंजियों के लिए, उपयोगकर्ता से पासवर्ड मांगने के बाद, स्क्रिप्ट रिलीज़ कुंजियों के साथ इनपुट टारगेट .zip
में मौजूद सभी APK फ़ाइलों पर फिर से हस्ताक्षर करती है. आदेश चलाने से पहले, आप
ANDROID_PW_FILE
एनवायरमेंट वैरिएबल को अस्थायी फ़ाइल नाम में बदलें; यह
इसके बाद स्क्रिप्ट आपके एडिटर को शुरू करती है, ताकि आप सभी कुंजियों के लिए पासवर्ड डाल सकें
(यह पासवर्ड डालने का ज़्यादा आसान तरीका हो सकता है).
APEX साइनिंग पासकोड बदलना
Android 10 में, कम लेवल के सिस्टम मॉड्यूल इंस्टॉल करने के लिए, APEX फ़ाइल फ़ॉर्मैट का इस्तेमाल किया जाता है. जैसा कि यहां बताया गया है APEX साइनिंग के लिए, हर APEX फ़ाइल दो कुंजियों से साइन किया जाता है: एक APEX में मिनी फ़ाइल सिस्टम इमेज के लिए और पूरे एपेक्स के लिए अन्य.
रिलीज़ के लिए साइन इन करते समय, APEX फ़ाइल के लिए दो साइनिंग पासकोड बदल दिए जाते हैं
इस्तेमाल किया जा सकता है. फ़ाइल सिस्टम पेलोड पासकोड को --extra_apex_payload
फ़्लैग से और APEX फ़ाइल साइनिंग पासकोड को --extra_apks
फ़्लैग से दिखाया जाता है.
टारडिस प्रॉडक्ट के लिए, मान लें कि आपके पास यहां दिया गया मुख्य कॉन्फ़िगरेशन है
com.android.conscrypt.apex
के लिए,
com.android.media.apex
, और
com.android.runtime.release.apex
APEX फ़ाइलें.
name="com.android.conscrypt.apex" public_key="PRESIGNED" private_key="PRESIGNED" container_certificate="PRESIGNED" container_private_key="PRESIGNED" name="com.android.media.apex" public_key="PRESIGNED" private_key="PRESIGNED" container_certificate="PRESIGNED" container_private_key="PRESIGNED" name="com.android.runtime.release.apex" public_key="vendor/yoyodyne/security/testkeys/com.android.runtime.avbpubkey" private_key="vendor/yoyodyne/security/testkeys/com.android.runtime.pem" container_certificate="vendor/yoyodyne/security/testkeys/com.google.android.runtime.release_container.x509.pem" container_private_key="vendor/yoyodyne/security/testkeys/com.google.android.runtime.release_container.pk8"
साथ ही, आपके पास रिलीज़ पासकोड वाली ये फ़ाइलें होती हैं:
vendor/yoyodyne/security/runtime_apex_container.x509.pem vendor/yoyodyne/security/runtime_apex_container.pk8 vendor/yoyodyne/security/runtime_apex_payload.pem
यह निर्देश,
com.android.runtime.release.apex
और
रिलीज़ साइनिंग के दौरान com.android.tzdata.apex
. खास तौर पर,
com.android.runtime.release.apex
बताए गए दस्तावेज़ से साइन किया गया है
रिलीज़ कुंजियां (APEX फ़ाइल के लिए runtime_apex_container
, और
फ़ाइल इमेज पेलोड के लिए runtime_apex_payload
).
com.android.tzdata.apex
को पहले से हस्ताक्षर किया गया माना जाता है. अन्य सभी APEX
फ़ाइलों को डिफ़ॉल्ट कॉन्फ़िगरेशन से हैंडल किया जाता है, जैसा कि टारगेट फ़ाइलों में बताया गया है.
./build/make/tools/releasetools/sign_target_files_apks \
--default_key_mappings vendor/yoyodyne/security/tardis \
--extra_apks com.android.runtime.release.apex=vendor/yoyodyne/security/runtime_apex_container \
--extra_apex_payload_key com.android.runtime.release.apex=vendor/yoyodyne/security/runtime_apex_payload.pem \
--extra_apks com.android.media.apex= \
--extra_apex_payload_key com.android.media.apex= \
-o tardis-target_files.zip \
signed-tardis-target_files.zip
ऊपर दिया गया कमांड चलाने पर, ये लॉग मिलते हैं:
[...] signing: com.android.runtime.release.apex container (vendor/yoyodyne/security/runtime_apex_container) : com.android.runtime.release.apex payload (vendor/yoyodyne/security/runtime_apex_payload.pem) NOT signing: com.android.conscrypt.apex (skipped due to special cert string) NOT signing: com.android.media.apex (skipped due to special cert string) [...]
अन्य विकल्प
sign_target_files_apks
साइनिंग स्क्रिप्ट, बिल्ड को फिर से तैयार करती है
ब्यौरा और फ़िंगरप्रिंट को बिल्ड प्रॉपर्टी फ़ाइलों में शामिल करता है, जिससे पता चल सके कि
बिल्ड एक साइन किया हुआ बिल्ड है. --tag_changes
फ़्लैग की मदद से यह कंट्रोल किया जाता है कि कौनसे बदलाव किए जा सकते हैं
फ़िंगरप्रिंट की मदद से बनाया जाता है. सभी फ़्लैग के दस्तावेज़ देखने के लिए, -h
के साथ स्क्रिप्ट चलाएं.
मैन्युअल तरीके से कुंजियां जनरेट करना
Android, पब्लिक एक्सपोनेंट 3 के साथ 2048-बिट आरएसए कुंजियों का इस्तेमाल करता है. openssl.org से openssl टूल का इस्तेमाल करके, सर्टिफ़िकेट/निजी कुंजी के जोड़े जनरेट किए जा सकते हैं:
# generate RSA keyopenssl genrsa -3 -out temp.pem 2048
Generating RSA private key, 2048 bit long modulus ....+++ .....................+++ e is 3 (0x3) # create a certificate with the public part of the keyopenssl req -new -x509 -key temp.pem -out releasekey.x509.pem -days 10000 -subj '/C=US/ST=California/L=San Narciso/O=Yoyodyne, Inc./OU=Yoyodyne Mobility/CN=Yoyodyne/emailAddress=yoyodyne@example.com'
# create a PKCS#8-formatted version of the private keyopenssl pkcs8 -in temp.pem -topk8 -outform DER -out releasekey.pk8 -nocrypt
# securely delete the temp.pem fileshred --remove temp.pem
ऊपर दिया गया openssl pkcs8 कमांड, बिना पासवर्ड वाली .pk8 फ़ाइल बनाता है. यह फ़ाइल, बिल्ड सिस्टम के साथ इस्तेमाल करने के लिए सही होती है. पासवर्ड से सुरक्षित .pk8 फ़ाइल बनाने के लिए (जो आपको सभी रिलीज़ की कुंजियों के लिए करनी चाहिए), -nocrypt
आर्ग्युमेंट को -passout stdin
से बदलें. इसके बाद, openssl, स्टैंडर्ड इनपुट से पढ़े गए पासवर्ड से निजी कुंजी को एन्क्रिप्ट कर देगा. नहीं
प्रॉम्प्ट प्रिंट किया जाता है, इसलिए अगर stDन टर्मिनल है, तो प्रोग्राम हैंग के तौर पर दिखेगा
जब पासवर्ड डालने के लिए इंतज़ार किया जा रहा हो. अन्य वैल्यू
अन्य जगहों से पासवर्ड पढ़ने के लिए, पासआउट आर्ग्युमेंट के लिए इस्तेमाल किया जाता है; इसके लिए
जानकारी के लिए,
खोलने के लिए दस्तावेज़.
temp.pem इंटरमीडिएट फ़ाइल में पासवर्ड सुरक्षा, इसलिए रिलीज़ जनरेट करते समय इसे सोच-समझकर नष्ट करें बटन का इस्तेमाल करें. खास तौर पर, GNUshred यूटिलिटी इंटरनेट सेवा देने वाली कंपनियों के नेटवर्क या जर्नल किए गए फ़ाइल सिस्टम. कुंजियां जनरेट करते समय, RAM डिस्क (जैसे कि tmpfs पार्टीशन) में मौजूद वर्किंग डायरेक्ट्री का इस्तेमाल किया जा सकता है. इससे यह पक्का किया जा सकता है कि इंटरमीडिएट डेटा अनजाने में ज़ाहिर न हो.
इमेज फ़ाइलें बनाएं
signed-target_files.zip
मिलने के बाद, आपको इमेज बनानी होगी, ताकि उसे किसी डिवाइस पर डाला जा सके.
टारगेट फ़ाइलों से हस्ताक्षर की गई इमेज बनाने के लिए,
Android डिवाइस के रूट से
पेड़:
img_from_target_files signed-target_files.zip signed-img.zip
signed-img.zip
फ़ाइल में सभी .img
फ़ाइलें शामिल हो जाती हैं.
किसी डिवाइस पर इमेज लोड करने के लिए, fastboot का इस्तेमाल इस तरह करें:
fastboot update signed-img.zip