รูปภาพระบบปฏิบัติการ Android ใช้ลายเซ็นการเข้ารหัสลับใน 2 ตําแหน่ง ได้แก่
- ไฟล์
.apk
แต่ละไฟล์ในรูปภาพต้องมีลายเซ็นกำกับ Package Manager ของ Android ใช้ลายเซ็น.apk
ใน 2 วิธี ดังนี้- เมื่อมีการแทนที่แอปพลิเคชัน แอปพลิเคชันนั้นต้องได้รับการรับรองด้วยคีย์เดียวกับแอปพลิเคชันเก่าจึงจะเข้าถึงข้อมูลของแอปพลิเคชันเก่าได้ ซึ่งจะเป็นจริงทั้งสำหรับการอัปเดตแอปของผู้ใช้โดยการเขียนทับ
.apk
และสำหรับการลบล้างแอปของระบบที่ติดตั้งเวอร์ชันใหม่แล้วในส่วน/data
- หากแอปพลิเคชันอย่างน้อย 2 แอปต้องการแชร์รหัสผู้ใช้ (เพื่อให้แชร์ข้อมูล ฯลฯ ได้) แอปพลิเคชันเหล่านั้นต้องได้รับการรับรองด้วยคีย์เดียวกัน
- เมื่อมีการแทนที่แอปพลิเคชัน แอปพลิเคชันนั้นต้องได้รับการรับรองด้วยคีย์เดียวกับแอปพลิเคชันเก่าจึงจะเข้าถึงข้อมูลของแอปพลิเคชันเก่าได้ ซึ่งจะเป็นจริงทั้งสำหรับการอัปเดตแอปของผู้ใช้โดยการเขียนทับ
- คุณต้องรับรองแพ็กเกจการอัปเดต OTA ด้วยคีย์ใดคีย์หนึ่งที่ระบบคาดไว้ มิเช่นนั้นกระบวนการติดตั้งจะปฏิเสธแพ็กเกจดังกล่าว
เผยแพร่คีย์
ต้นไม้ Android มี test-keys ในส่วน
build/target/product/security
การสร้างอิมเมจระบบปฏิบัติการ Android โดยใช้ make
จะเซ็นชื่อไฟล์ .apk
ทั้งหมดโดยใช้ test-keys เนื่องจากคีย์ทดสอบเป็นคีย์ที่เผยแพร่ต่อสาธารณะ ทุกคนจึงสามารถรับรองไฟล์ .apk ของตนเองด้วยคีย์เดียวกัน ซึ่งอาจทำให้บุคคลดังกล่าวแทนที่หรือลักลอบใช้แอประบบที่ฝังอยู่ในอิมเมจระบบปฏิบัติการได้ ด้วยเหตุนี้ คุณจึงต้องลงนามอิมเมจระบบปฏิบัติการ Android ที่เผยแพร่ต่อสาธารณะหรือใช้งานด้วยชุดคีย์การเผยแพร่พิเศษที่มีเพียงคุณเท่านั้นที่เข้าถึงได้
หากต้องการสร้างชุดคีย์การเผยแพร่ที่ไม่ซ้ำกันของคุณเอง ให้เรียกใช้คำสั่งต่อไปนี้จากรูทของโครงสร้าง 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 ครั้ง ดังนี้
1 ครั้งโดยระบบหลัก โดยใช้วิธี RecoverySystem.verifyPackage()
ใน Android API และอีก 1 ครั้งโดย Recovery 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
- testkey
- คีย์เริ่มต้นทั่วไปสำหรับแพ็กเกจที่ไม่ได้ระบุคีย์ไว้
- แพลตฟอร์ม
- คีย์ทดสอบสำหรับแพ็กเกจที่เป็นส่วนหนึ่งของแพลตฟอร์มหลัก
- แชร์
- ทดสอบคีย์สำหรับสิ่งที่แชร์ในกระบวนการบ้าน/รายชื่อติดต่อ
- สื่อ
- คีย์ทดสอบสำหรับแพ็กเกจที่เป็นส่วนหนึ่งของระบบสื่อ/ดาวน์โหลด
แพ็กเกจแต่ละรายการจะระบุคีย์ใดคีย์หนึ่งเหล่านี้โดยตั้งค่า LOCAL_CERTIFICATE ในไฟล์ Android.mk (ระบบจะใช้ testkey หากไม่ได้ตั้งค่าตัวแปรนี้) นอกจากนี้ คุณยังระบุคีย์อื่นโดยสิ้นเชิงได้ด้วยเส้นทาง เช่น
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
จะทำงานกับไฟล์เป้าหมายที่สร้างขึ้นสำหรับบิลด์ ข้อมูลทั้งหมดเกี่ยวกับใบรับรองและคีย์ส่วนตัวที่ใช้ในขณะสร้างจะรวมอยู่ในไฟล์เป้าหมาย เมื่อเรียกใช้สคริปต์การรับรองเพื่อรับรองรุ่น คุณจะแทนที่คีย์การรับรองได้โดยอิงตามชื่อคีย์หรือชื่อ APK
ใช้ Flag --key_mapping
และ --default_key_mappings
เพื่อระบุการเปลี่ยนคีย์ตามชื่อคีย์ ดังนี้
- แฟล็ก
--key_mapping src_key=dest_key
จะระบุการเปลี่ยนคีย์ทีละ 1 คีย์ - 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
เพื่อระบุคีย์การรับรองที่จะแทนที่ตามชื่อ 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 ด้วยคีย์รุ่น คีย์เพย์โหลดของระบบไฟล์จะระบุด้วย Flag --extra_apex_payload
และคีย์การรับรองไฟล์ APEX ทั้งหมดจะระบุด้วย Flag --extra_apks
สำหรับผลิตภัณฑ์ Tardis ให้สมมติว่าคุณกำหนดค่าคีย์ต่อไปนี้สำหรับไฟล์ 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
คำสั่งต่อไปนี้จะลบล้างคีย์ Signing สำหรับ 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
จะเขียนคำอธิบายและลายนิ้วมือของบิลด์ในไฟล์พร็อพเพอร์ตี้ของบิลด์อีกครั้งเพื่อให้ทราบว่าบิลด์ดังกล่าวเป็นบิลด์ที่ลงนามแล้ว Flag --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 เป็นเทอร์มินัล โปรแกรมจะดูเหมือนค้างอยู่ขณะที่รอให้คุณป้อนรหัสผ่าน คุณสามารถใช้ค่าอื่นๆ สำหรับอาร์กิวเมนต์ 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