รูปภาพระบบปฏิบัติการ Android ใช้ลายเซ็นการเข้ารหัสใน 2 ที่ต่อไปนี้
- ไฟล์
.apk
แต่ละไฟล์ในรูปภาพต้องมีลายเซ็นกำกับ ของ Android Package Manager จะใช้ลายเซ็น.apk
ใน 2 วิธี ได้แก่- เมื่อมีการแทนที่แอปพลิเคชัน แอปพลิเคชันนั้นต้องได้รับการรับรองโดยคีย์เดียวกับแอปพลิเคชันเก่าจึงจะเข้าถึงข้อมูลของแอปพลิเคชันเก่าได้ ซึ่งจะเป็นจริงทั้งสำหรับการอัปเดตแอปของผู้ใช้โดยการเขียนทับ
.apk
และสำหรับการลบล้างแอปของระบบที่ติดตั้งเวอร์ชันใหม่แล้วในส่วน/data
- หากมีแอปพลิเคชันตั้งแต่ 2 แอปขึ้นไปต้องการแชร์ User ID (เพื่อให้สามารถแชร์ เป็นต้น) ข้อมูลเหล่านั้นจะต้องได้รับการลงนามด้วยคีย์เดียวกัน
- เมื่อมีการแทนที่แอปพลิเคชัน แอปพลิเคชันนั้นต้องได้รับการรับรองโดยคีย์เดียวกับแอปพลิเคชันเก่าจึงจะเข้าถึงข้อมูลของแอปพลิเคชันเก่าได้ ซึ่งจะเป็นจริงทั้งสำหรับการอัปเดตแอปของผู้ใช้โดยการเขียนทับ
- แพ็กเกจการอัปเดต OTA ต้องมีการลงชื่อด้วยคีย์ใดคีย์หนึ่งที่คาดหมายภายใน มิฉะนั้นขั้นตอนการติดตั้งจะปฏิเสธ
เผยแพร่คีย์
ต้นไม้ Android มี test-keys ในส่วน
build/target/product/security
การสร้างอิมเมจระบบปฏิบัติการ Android โดยใช้ make
จะเซ็นชื่อไฟล์ .apk
ทั้งหมดโดยใช้ test-keys เนื่องจากคีย์ทดสอบเป็นคีย์ที่เผยแพร่ต่อสาธารณะ ทุกคนจึงสามารถรับรองไฟล์ .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
ลายเซ็นและการโหลดจากแหล่งที่ไม่รู้จัก
การโหลดจากอุปกรณ์อื่นไม่ได้ข้ามกลไกการยืนยันลายเซ็นแพ็กเกจตามปกติของการกู้คืน ก่อนที่จะติดตั้งแพ็กเกจ การกู้คืนจะยืนยันว่าแพ็กเกจได้รับการเซ็นชื่อด้วยคีย์ส่วนตัวรายการใดรายการหนึ่งที่ตรงกับคีย์สาธารณะที่จัดเก็บไว้ในพาร์ติชันการกู้คืน เช่นเดียวกับแพ็กเกจที่ส่งผ่านอากาศ
โดยทั่วไปการอัปเดตแพ็กเกจที่ได้รับจากระบบหลักจะได้รับการยืนยัน 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
- คีย์ทดสอบ
- คีย์เริ่มต้นทั่วไปสำหรับแพ็กเกจที่ไม่ได้ระบุคีย์
- แพลตฟอร์ม
- คีย์ทดสอบสำหรับแพ็กเกจที่เป็นส่วนหนึ่งของแพลตฟอร์มหลัก
- แชร์
- คีย์ทดสอบสำหรับสิ่งที่แชร์ในกระบวนการของบ้าน/รายชื่อติดต่อ
- สื่อ
- คีย์ทดสอบสำหรับแพ็กเกจที่เป็นส่วนหนึ่งของระบบสื่อ/ดาวน์โหลด
แพ็กเกจแต่ละรายการจะระบุคีย์ใดคีย์หนึ่งเหล่านี้โดยการตั้งค่า 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 บิลด์นี้ใช้ได้เฉพาะคีย์ส่วนตัวที่
ไม่ มีการป้องกันด้วยรหัสผ่าน
ตัวเลือกการลงนามขั้นสูง
การเปลี่ยนคีย์ App Signing ของ APK
สคริปต์การรับรอง sign_target_files_apks
ทำงานในเป้าหมาย
ไฟล์ที่สร้างขึ้นสำหรับบิลด์ ข้อมูลทั้งหมดเกี่ยวกับใบรับรองและข้อมูลส่วนตัว
คีย์ที่ใช้ในเวลาบิลด์จะรวมอยู่ในไฟล์เป้าหมาย เมื่อเรียกใช้เมธอด
สคริปต์การลงนามเพื่อลงนามสำหรับการเปิดตัว คีย์การรับรองสามารถแทนที่ได้โดยอิงตามคีย์
name หรือชื่อ APK
ใช้--key_mapping
และ--default_key_mappings
แฟล็กเพื่อระบุการแทนที่คีย์ตามชื่อคีย์:
- Flag
--key_mapping src_key=dest_key
จะระบุการเปลี่ยนทดแทนทีละคีย์ - Flag
--default_key_mappings dir
จะระบุไดเรกทอรีที่มีคีย์ 5 รายการเพื่อแทนที่คีย์ทั้งหมดใน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 สมมติว่าคุณมีการกําหนดค่าคีย์ต่อไปนี้สําหรับไฟล์ APEX com.android.conscrypt.apex
, com.android.media.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
เพื่อดูเอกสารประกอบเกี่ยวกับ Flag ทั้งหมด
สร้างคีย์ด้วยตนเอง
Android ใช้คีย์ RSA 2048 บิตที่มีตัวคูณสาธารณะ 3 คุณสามารถสร้าง คู่คีย์ของใบรับรอง/คีย์ส่วนตัวโดยใช้เครื่องมือ openssl จาก openssl.org
# 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
จะเข้ารหัสคีย์ส่วนตัวด้วยรหัสผ่านที่อ่านจากอินพุตมาตรฐาน ยังไม่ได้ติดต่อ
จะถูกพิมพ์ ดังนั้นหาก 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