การลงนามในบิลด์สำหรับการเปิดตัว

อิมเมจระบบปฏิบัติการ Android ใช้ลายเซ็นเข้ารหัสในสองที่:

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

ปล่อยกุญแจ

ต้นไม้ Android รวมถึงการทดสอบภายใต้ปุ่ม build/target/product/security การสร้างภาพโดยใช้ระบบปฏิบัติการ Android 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 เป็น input และผลิตใหม่เป้าหมายไฟล์ .zip ที่ทุก .apk ไฟล์ที่ได้รับการเซ็นสัญญากับกุญแจใหม่ ภาพที่เพิ่งเซ็นสัญญาสามารถพบได้ภายใต้ IMAGES/ ใน signed-target_files.zip

การลงนามในแพ็คเกจ OTA

ลงนามไฟล์เป้าหมายไปรษณีย์สามารถแปลงเป็นซิปปรับปรุงลงนาม OTA ใช้ขั้นตอนต่อไปนี้:
ota_from_target_files \
-k  (--package_key) 
signed-target_files.zip \
signed-ota_update.zip

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

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

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

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

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

มาตรฐานของ Android สร้างใช้ห้าปุ่มซึ่งทั้งหมดอยู่ใน build/target/product/security :

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

ตัวเลือกการเซ็นชื่อขั้นสูง

การเปลี่ยนคีย์การลงนาม 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.

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

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

Android 10 เปิดตัว รูปแบบไฟล์ APEX สำหรับการติดตั้งโมดูลระบบในระดับต่ำกว่า ตามที่อธิบายไว้ใน 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 มีการลงนามกับปุ่มปล่อยระบุ ( 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 ด้วยรหัสผ่านที่ไม่เหมาะสำหรับการใช้กับการสร้างระบบ เพื่อสร้าง .pk8 ที่มีความปลอดภัยด้วยรหัสผ่าน (ซึ่งคุณควรทำสำหรับคีย์การเปิดตัวจริงทั้งหมด) แทนที่ -nocrypt ทะเลาะกับ -passout stdin ; จากนั้น openssl จะเข้ารหัสคีย์ส่วนตัวด้วยรหัสผ่านที่อ่านจากอินพุตมาตรฐาน ไม่มีการพิมพ์ข้อความแจ้ง ดังนั้นหาก stdin เป็นเทอร์มินัล โปรแกรมจะหยุดทำงานเมื่อรอให้คุณป้อนรหัสผ่านจริงๆ ค่าอื่นๆ สามารถใช้สำหรับอาร์กิวเมนต์ the-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