रिलीज़ के लिए बिल्ड

Android OS की इमेज में दो जगहों पर क्रिप्टोग्राफ़िक हस्ताक्षर का इस्तेमाल किया जाता है:

  1. इमेज में मौजूद हर .apk फ़ाइल पर हस्ताक्षर होना चाहिए. Android की पैकेज मैनेजर, .apk सिग्नेचर का इस्तेमाल दो तरीकों से करता है:
    • जब किसी ऐप्लिकेशन को बदला जाता है, तो उसे उसी कुंजी से हस्ताक्षर किया जाना चाहिए जिससे पुराने ऐप्लिकेशन के डेटा पर पहुंच पाने के लिए पुराने ऐप्लिकेशन का इस्तेमाल करें. यह होल्ड है यह .apk को ओवरराइट करके उपयोगकर्ता के ऐप्लिकेशन अपडेट करने और किसी सिस्टम ऐप्लिकेशन को /data.
    • अगर दो या दो से ज़्यादा ऐप्लिकेशन एक यूज़र आईडी शेयर करना चाहते हैं (ताकि वे शेयर कर सकें डेटा, वगैरह) पर एक ही कुंजी से हस्ताक्षर किए जाने चाहिए.
  2. ओटीए अपडेट पैकेज को किसी एक ऐसी कुंजी से साइन किया जाना चाहिए जो सिस्टम या इंस्टॉलेशन प्रक्रिया उन्हें अस्वीकार कर देगी.

रिलीज़ बटन

Android ट्री में test-keys build/target/product/security. 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 डिफ़ॉल्ट रूप से, टेस्ट पासकोड से मैच करने के लिए, OTA सर्टिफ़िकेट. रिलीज़ की गई इमेज पर, किसी दूसरे सर्टिफ़िकेट का इस्तेमाल करना ज़रूरी है, ताकि डिवाइस सर्टिफ़िकेट की प्रामाणिकता की पुष्टि कर सकें पैकेज अपडेट करें. -o फ़्लैग को पास किया जा रहा है जैसा कि पिछले सेक्शन में दिखाया गया है, sign_target_files_apks आपके सर्टिफ़िकेट से मिले रिलीज़ पासकोड सर्टिफ़िकेट के साथ, टेस्ट पासकोड सर्टिफ़िकेट डायरेक्ट्री.

आम तौर पर, सिस्टम इमेज और रिकवरी इमेज में ओटीए का एक जैसा सेट सेव होता है सार्वजनिक पासकोड. कुंजियों के खाता वापस पाने के सेट में सिर्फ़ एक कुंजी जोड़ने से, यह उन पैकेज को साइन किया जा सकता है जिन्हें सिर्फ़ अलग से लोड करने की सुविधा का इस्तेमाल करके इंस्टॉल किया जा सकता है (यह मानते हुए कि मुख्य सिस्टम का अपडेट डाउनलोड करने का तरीका पुष्टि करने का एक तरीका है. आप अतिरिक्त कुंजियां जोड़ने के लिए इसे केवल PRODUCT_EXP_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 और निजी पासकोड, जिसमें एक्सटेंशन .pk8 है. निजी कुंजी को गोपनीय रखा जाना चाहिए और पैकेज पर हस्ताक्षर करने के लिए इसकी ज़रूरत होती है. कुंजी पासवर्ड से सुरक्षित किया जा सकता है. सर्टिफ़िकेट में इसमें कुंजी का सिर्फ़ सार्वजनिक आधा हिस्सा होता है, इसलिए इसे डिस्ट्रिब्यूट किया जा सकता है है. इसका इस्तेमाल यह पुष्टि करने के लिए किया जाता है कि पैकेज को निजी पासकोड दबाएं.

स्टैंडर्ड Android बिल्ड में पांच कुंजियों का इस्तेमाल किया जाता है, जो सभी build/target/product/security में मौजूद होती हैं:

जांच कुंजी
ऐसे पैकेज के लिए सामान्य डिफ़ॉल्ट कुंजी जो किसी कुंजी के बारे में नहीं बताती हैं.
प्लेटफ़ॉर्म
मुख्य प्लैटफ़ॉर्म में शामिल पैकेज के लिए जांच कुंजी.
शेयर किया गया
होम/संपर्क प्रोसेस में शेयर की गई चीज़ों की जांच करने के लिए कुंजी.
media
ऐसे पैकेज के लिए जांच कुंजी जो मीडिया/डाउनलोड सिस्टम का हिस्सा हैं.
नेटवर्कस्टैक
नेटवर्किंग सिस्टम का हिस्सा होने वाले पैकेज के लिए जांच कुंजी. कॉन्टेंट बनाने Networktack कुंजी का इस्तेमाल, इस तरह डिज़ाइन की गई बाइनरी पर हस्ताक्षर करने के लिए किया जाता है मॉड्यूलर सिस्टम कॉम्पोनेंट . क्या आपके मॉड्यूल के अपडेट अलग से बनाए गए हैं और इन्हें पहले से बने हुए के तौर पर इंटिग्रेट किया गया है दिखाई दे रहा है, तो हो सकता है कि आपको नेटवर्क-स्टैक कुंजी जनरेट करने की ज़रूरत न पड़े, Android सोर्स ट्री.

अलग-अलग पैकेज, 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

इसका इस्तेमाल करें --extra_apks apk_name1,apk_name2,...=key फ़्लैग का इस्तेमाल करें. अगर आपने key को खाली छोड़ दिया गया है, स्क्रिप्ट बताए गए 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-बिट आरएसए कुंजियों का इस्तेमाल करता है. जनरेट करने के लिए प्रमाणपत्र/निजी कुंजी जोड़े, जो openएसएसएल.org:

# generate RSA key
openssl 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 key
openssl 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 key
openssl pkcs8 -in temp.pem -topk8 -outform DER -out releasekey.pk8 -nocrypt

# securely delete the temp.pem file
shred --remove temp.pem

ऊपर दिया गया playएसएसएल pkcs8 कमांड no के साथ .pk8 फ़ाइल बनाता है यह पासवर्ड बिल्ड सिस्टम के साथ इस्तेमाल करने के लिए सही होता है. .pk8 सुरक्षित बनाने के लिए पासवर्ड डालें (जो आपको सभी वास्तविक रिलीज़ कुंजियों के लिए करना चाहिए), तो -passout stdin के साथ -nocrypt तर्क; फिर OpenSSL निजी कुंजी को स्टैंडर्ड इनपुट से पासवर्ड डालकर एन्क्रिप्ट (सुरक्षित) करेगा. नहीं प्रॉम्प्ट प्रिंट किया जाता है, इसलिए अगर stDन टर्मिनल है, तो प्रोग्राम हैंग के तौर पर दिखेगा जब पासवर्ड डालने के लिए इंतज़ार किया जा रहा हो. अन्य वैल्यू अन्य जगहों से पासवर्ड पढ़ने के लिए, पासआउट आर्ग्युमेंट के लिए इस्तेमाल किया जाता है; इसके लिए जानकारी के लिए, खोलने के लिए दस्तावेज़.

temp.pem इंटरमीडिएट फ़ाइल में पासवर्ड सुरक्षा, इसलिए रिलीज़ जनरेट करते समय इसे सोच-समझकर नष्ट करें बटन का इस्तेमाल करें. खास तौर पर, GNUshred यूटिलिटी इंटरनेट सेवा देने वाली कंपनियों के नेटवर्क या जर्नल किए गए फ़ाइल सिस्टम. रैम डिस्क में मौजूद, काम करने वाली डायरेक्ट्री का इस्तेमाल किया जा सकता है (जैसे कि tmpfs विभाजन) जब यह इंटरमीडिएट को सुनिश्चित करने के लिए कुंजियां जनरेट करता है अनजाने में उनके संपर्क में नहीं आते हैं.

इमेज फ़ाइलें बनाएं

signed-target_files.zip होने पर, आपको ये काम करने होंगे चित्र बना सकता है ताकि आप उसे डिवाइस पर रख सकें. टारगेट फ़ाइलों से हस्ताक्षर की गई इमेज बनाने के लिए, Android डिवाइस के रूट से पेड़:

img_from_target_files signed-target_files.zip signed-img.zip
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है नतीजे के तौर पर मिलने वाली फ़ाइल signed-img.zip में सभी .img फ़ाइलें शामिल हैं. डिवाइस पर चित्र लोड करने के लिए, फ़ास्टबूट का इस रूप में उपयोग करें अनुसरण करता है:
fastboot update signed-img.zip
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है