ลงนามบิลด์สำหรับการเผยแพร่

รูปภาพระบบปฏิบัติการ Android ใช้ลายเซ็นการเข้ารหัสใน 2 ที่ต่อไปนี้

  1. ไฟล์ .apk แต่ละไฟล์ในรูปภาพต้องมีลายเซ็นกำกับ ของ Android Package Manager จะใช้ลายเซ็น .apk ใน 2 วิธี ได้แก่
    • เมื่อแทนที่แอปพลิเคชันแล้ว จะต้องมีการลงนามแอปพลิเคชันด้วยคีย์เดียวกันกับ แอปพลิเคชันเดิมเพื่อรับสิทธิ์เข้าถึงข้อมูลของแอปพลิเคชันเดิม การคงไว้ชั่วคราวนี้ เป็นจริงทั้งสำหรับการอัปเดตแอปของผู้ใช้โดยการเขียนทับ .apk และสำหรับ การลบล้างแอประบบที่ติดตั้งเวอร์ชันใหม่ภายใต้ /data
    • หากมีแอปพลิเคชันตั้งแต่ 2 แอปขึ้นไปต้องการแชร์ User ID (เพื่อให้สามารถแชร์ เป็นต้น) ข้อมูลเหล่านั้นจะต้องได้รับการลงนามด้วยคีย์เดียวกัน
  2. แพ็กเกจการอัปเดต OTA ต้องลงนามด้วยคีย์ใดคีย์หนึ่งที่คาดหมายภายใน มิฉะนั้นขั้นตอนการติดตั้งจะปฏิเสธ

คีย์สำหรับรุ่น

แผนผัง Android ประกอบด้วยคีย์การทดสอบในส่วน build/target/product/security การสร้างอิมเมจระบบปฏิบัติการ Android โดยใช้ make จะลงนามไฟล์ .apk ทั้งหมดโดยใช้ คีย์ทดสอบ เนื่องจากคีย์ทดสอบเป็นที่รู้จักแบบสาธารณะ ทุกคนจึงสามารถลงนามของตนเองได้ ไฟล์ .apk ที่มีคีย์เดียวกัน ซึ่งอาจอนุญาตให้แทนที่หรือลักลอบใช้ระบบได้ แอปที่ติดตั้งในอิมเมจระบบปฏิบัติการ ด้วยเหตุนี้ จึงจำเป็นที่จะต้องลงชื่อ อิมเมจระบบปฏิบัติการ Android ที่เผยแพร่ต่อสาธารณะหรือใช้งานได้พร้อมชุดพิเศษ release-key ที่มีเพียงคุณเท่านั้นที่เข้าถึงได้

ในการสร้างชุดคีย์การเผยแพร่ที่ไม่ซ้ำกันของคุณเอง ให้เรียกใช้คำสั่งเหล่านี้จาก รากของแผนผัง 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

ไฟล์ ZIP ของไฟล์เป้าหมายที่ลงนามแล้วแปลงเป็นไฟล์ ZIP การอัปเดต OTA ที่ลงนามได้ โดยใช้ขั้นตอนต่อไปนี้
ota_from_target_files \
-k  (--package_key) 
signed-target_files.zip \
signed-ota_update.zip

ลายเซ็นและไซด์โหลด

การโหลดจากแหล่งที่ไม่รู้จักจะไม่ข้ามลายเซ็นแพ็กเกจปกติของการกู้คืน กลไกการยืนยัน ก่อนติดตั้งแพ็กเกจ การกู้คืนจะตรวจสอบว่า คีย์ดังกล่าวลงชื่อด้วยคีย์ส่วนตัวที่ตรงกับคีย์สาธารณะที่เก็บไว้ใน พาร์ติชันการกู้คืน เช่นเดียวกับที่ใช้สำหรับพัสดุที่ส่งผ่านอากาศ (OTA)

โดยทั่วไปการอัปเดตแพ็กเกจที่ได้รับจากระบบหลักจะได้รับการยืนยัน 2 ครั้ง ดังนี้ หนึ่งครั้งโดยระบบหลัก โดยใช้ RecoverySystem.verifyPackage() ใน API Android แล้วแก้ไขอีกครั้งโดย RecoverySystem API จะตรวจสอบลายเซ็นกับคีย์สาธารณะ ที่เก็บไว้ในระบบหลักในไฟล์ /system/etc/security/otacerts.zip (โดยค่าเริ่มต้น) การกู้คืนจะตรวจสอบลายเซ็นกับคีย์สาธารณะที่จัดเก็บไว้ ในดิสก์ RAM ของพาร์ติชันการกู้คืนในไฟล์ /res/keys

โดยค่าเริ่มต้น ไฟล์เป้าหมาย .zip ที่สร้างโดยบิลด์จะตั้งค่าแอตทริบิวต์ ใบรับรอง OTA ให้ตรงกับคีย์ทดสอบ ในภาพที่เผยแพร่ ต้องใช้ใบรับรองเพื่อให้อุปกรณ์ยืนยันความถูกต้องของ อัปเดตแพ็กเกจ ส่ง Flag -o ไปยัง sign_target_files_apks ตามที่แสดงในส่วนก่อนหน้าจะแทนที่ ใบรับรองคีย์ทดสอบกับใบรับรองคีย์การเผยแพร่จากใบรับรองของคุณ ไดเรกทอรี

ปกติแล้วอิมเมจระบบและอิมเมจการกู้คืนจะจัดเก็บ OTA ชุดเดียวกัน คีย์สาธารณะ การเพิ่มคีย์ลงในเฉพาะชุดคีย์การกู้คืน เป็นไปได้ที่จะลงชื่อในแพ็กเกจที่สามารถติดตั้งผ่านการโหลดจากแหล่งที่ไม่รู้จักเท่านั้น (หากกลไกการดาวน์โหลดการอัปเดตของระบบหลักทำงานอย่างถูกต้องแล้ว กับ 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 ระบบที่ตรวจสอบความถูกต้องของแพ็กเกจที่ดาวน์โหลดจะไม่เรียกใช้การกู้คืน แพ็กเกจที่ลงนามด้วยคีย์นี้

ใบรับรองและคีย์ส่วนตัว

แต่ละคีย์จะอยู่ใน 2 ไฟล์ ได้แก่ ใบรับรอง ซึ่งมีส่วน นามสกุล .x509.pem และคีย์ส่วนตัวซึ่งมีส่วนขยาย .pk8 คีย์ส่วนตัวควรเก็บเป็นความลับและใช้เพื่อลงนามในแพ็กเกจ คีย์ อาจได้รับการป้องกันด้วยรหัสผ่าน ใบรับรองใน ตรงกันข้าม มีเฉพาะส่วนครึ่งสาธารณะของคีย์ ดังนั้นจึงสามารถกระจายของคีย์ได้ อย่างกว้างขวาง ซึ่งใช้เพื่อยืนยันว่าแพ็กเกจมีการลงนามโดย คีย์ส่วนตัว

บิลด์มาตรฐานของ Android ใช้คีย์ 5 รายการ ซึ่งคีย์ทั้งหมดอยู่ใน build/target/product/security

คีย์ทดสอบ
คีย์เริ่มต้นทั่วไปสำหรับแพ็กเกจที่ไม่ได้ระบุคีย์
แพลตฟอร์ม
คีย์ทดสอบสำหรับแพ็กเกจที่เป็นส่วนหนึ่งของแพลตฟอร์มหลัก
แชร์
คีย์ทดสอบสำหรับสิ่งที่แชร์ในกระบวนการของบ้าน/รายชื่อติดต่อ
สื่อ
คีย์ทดสอบสำหรับแพ็กเกจที่เป็นส่วนหนึ่งของระบบสื่อ/ดาวน์โหลด
Networktack
คีย์ทดสอบสำหรับแพ็กเกจที่เป็นส่วนหนึ่งของระบบเครือข่าย คีย์ Networkstack ใช้เพื่อลงนามในไบนารีที่ออกแบบเป็น ส่วนประกอบของระบบโมดูล หากคุณสร้างการอัปเดตโมดูลแยกต่างหากและผสานรวมเป็นแบบที่สร้างไว้ล่วงหน้า ในรูปภาพของอุปกรณ์ คุณอาจไม่จำเป็นต้องสร้างคีย์ Networktack ใน แผนผังแหล่งที่มาของ Android

แพ็กเกจแต่ละรายการจะระบุคีย์ใดคีย์หนึ่งเหล่านี้โดยการตั้งค่า LOCAL_CERTIFICATE ในไฟล์ Android.mk (จะใช้คีย์ทดสอบหากไม่ได้ตั้งค่าตัวแปรนี้) คุณ ยังสามารถระบุคีย์ที่แตกต่างกันโดยสิ้นเชิงตามชื่อพาธได้ เช่น

device/yoyodyne/apps/SpecialApp/Android.mk
 [...]

LOCAL_CERTIFICATE := device/yoyodyne/security/special

ตอนนี้บิลด์จะใช้คีย์ device/yoyodyne/security/special.{x509.pem,pk8} เพื่อลงนาม SpecialApp.apk บิลด์นี้ใช้ได้เฉพาะคีย์ส่วนตัวที่ ไม่ มีการป้องกันด้วยรหัสผ่าน

ตัวเลือกการลงนามขั้นสูง

การแทนที่คีย์ Signing ของ APK

สคริปต์การรับรอง sign_target_files_apks ทำงานในเป้าหมาย ไฟล์ที่สร้างขึ้นสำหรับบิลด์ ข้อมูลทั้งหมดเกี่ยวกับใบรับรองและข้อมูลส่วนตัว คีย์ที่ใช้ในเวลาบิลด์จะรวมอยู่ในไฟล์เป้าหมาย เมื่อเรียกใช้เมธอด สคริปต์การลงนามเพื่อลงนามสำหรับการเปิดตัว คีย์การรับรองสามารถแทนที่ได้โดยอิงตามคีย์ name หรือชื่อ APK

ใช้--key_mappingและ--default_key_mappings แฟล็กเพื่อระบุการแทนที่คีย์ตามชื่อคีย์:

  • แฟล็ก --key_mapping src_key=dest_key ระบุการแทนที่ทีละคีย์
  • แฟล็ก --default_key_mappings dir ระบุ ที่มีคีย์ห้ารายการเพื่อแทนที่คีย์ทั้งหมดใน build/target/product/security; เทียบเท่ากับการใช้ --key_mapping 5 ครั้งเพื่อระบุการแมป
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 รายการ เพื่อระบุการแทนที่คีย์ Signing ตามชื่อ APK ถ้า key ว่างเปล่า สคริปต์จะจัดการกับ APK ที่ระบุ ตามที่ลงนามไว้ล่วงหน้า

สำหรับผลิตภัณฑ์ Tardis สมมติ คุณต้องมีคีย์ที่ป้องกันด้วยรหัสผ่าน 6 คีย์ดังนี้ 5 เพื่อแทนที่ 5 ใน build/target/product/security และอีก 1 รายการ เพื่อแทนที่คีย์เพิ่มเติม 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.

หลังจากแจ้งให้ผู้ใช้ป้อนรหัสผ่านสำหรับคีย์ทั้งหมดที่มีการป้องกันด้วยรหัสผ่าน สคริปต์จะลงนามไฟล์ APK ทั้งหมดในเป้าหมายอินพุต .zip อีกครั้งด้วย ปล่อยคีย์ ก่อนเรียกใช้คำสั่ง คุณยังสามารถตั้งค่า ตัวแปรสภาพแวดล้อม ANDROID_PW_FILE เป็นชื่อไฟล์ชั่วคราว เวลา สคริปต์จะเรียกเครื่องมือแก้ไขของคุณเพื่อให้คุณป้อนรหัสผ่านสำหรับคีย์ทั้งหมดได้ (วิธีนี้อาจช่วยให้ป้อนรหัสผ่านได้สะดวกกว่า)

การเปลี่ยนคีย์ Signing APEX

Android 10 เปิดตัว รูปแบบไฟล์ APEX สำหรับการติดตั้ง โมดูลระบบระดับต่ำลงมา ตามที่อธิบายไว้ใน การลงชื่อ APEX ไฟล์ APEX แต่ละไฟล์ ลงนามด้วยคีย์ 2 คีย์ คีย์หนึ่งสำหรับอิมเมจระบบไฟล์ขนาดเล็กภายใน APEX และ อื่นๆ สำหรับทั้ง APEX

เมื่อลงนามสำหรับรุ่น ระบบจะแทนที่คีย์การรับรอง 2 รายการสำหรับไฟล์ APEX ด้วยแป้นปลดล็อก คีย์เพย์โหลดของระบบไฟล์จะระบุด้วย --extra_apex_payload Flag และคีย์การลงนามไฟล์ APEX ทั้งหมดคือ ที่ระบุด้วยแฟล็ก --extra_apks

สำหรับผลิตภัณฑ์ tardis สมมติว่าคุณมีการกำหนดค่าคีย์ต่อไปนี้ สำหรับcom.android.conscrypt.apex com.android.media.apex และ ไฟล์ APEX com.android.runtime.release.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 ลงนามด้วย คีย์การเผยแพร่ (runtime_apex_container สำหรับไฟล์ APEX และ 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 ใช้คีย์ RSA 2048 บิตที่มีเลขชี้กำลังสาธารณะ 3 คุณสามารถสร้าง คู่คีย์ของใบรับรอง/คีย์ส่วนตัวโดยใช้เครื่องมือ openssl จาก openssl.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

คำสั่ง openssl pkcs8 ที่ระบุด้านบนสร้างไฟล์ .pk8 ที่มี no ซึ่งเหมาะสำหรับใช้กับระบบบิลด์ วิธีสร้างไฟล์ .pk8 ที่ปลอดภัย ด้วยรหัสผ่าน (ซึ่งคุณควรทำกับคีย์การเผยแพร่จริงทั้งหมด) แทนที่ อาร์กิวเมนต์ -nocrypt ที่มี -passout stdin จากนั้น openssl จะเข้ารหัสคีย์ส่วนตัวด้วยรหัสผ่านที่อ่านจากอินพุตมาตรฐาน ยังไม่ได้ติดต่อ จะถูกพิมพ์ ดังนั้นหาก stdin เป็นเทอร์มินัล โปรแกรมจะปรากฏ เวลาที่รอให้คุณป้อนรหัสผ่านเท่านั้น ค่าอื่นๆ อาจเป็น ใช้สำหรับอาร์กิวเมนต์ Passout เพื่ออ่านรหัสผ่านจากตำแหน่งอื่น สำหรับ ดูรายละเอียดได้ที่ เอกสาร openssl

ไฟล์กลาง 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