เซ็นชื่อในโค้ดสำหรับ Android
ในบทความนี้ คุณจะได้เรียนรู้เกี่ยวกับการเขียนโค้ดสำหรับ Android (APK) คุณต้องเซ็นชื่อแอปของคุณสำหรับ Android หากคุณเลือก Android เป็นหนึ่งใน แพลตฟอร์ม ในขณะที่สร้างและสร้าง โครงการการครอบ ของคุณ
ข้อสำคัญ
หากคุณต้องการลงชื่อแอป AAB เพื่อเผยแพร่ใน Google Play แทน โปรดดูที่ ลงชื่อแอปของคุณ
เตรียม PC ของคุณ
คุณต้องมีข้อมูลต่อไปนี้เพื่อเริ่มต้นใช้งาน:
- ติดตั้ง Android Studio
- ติดตั้ง OpenSSL
สร้างคีย์
หมายเหตุ
ข้ามไปที่ ลงชื่อในแพคเกจ APK หากคุณได้สร้างคีย์และแฮชลายเซ็นไว้แล้วขณะที่สร้าง การลงทะเบียนแอป
เราจะใช้ keytool.exe (ใช้ได้หลังจากติดตั้ง Android Studio จากตำแหน่งโฟลเดอร์ "Drive:\Program Files\Android\Android Studio\jre\bin\keytool.exe") เพื่อสร้างใบรับรองที่จะลงชื่อในแพคเกจแอปพลิเคชัน Keytool ใช้เพื่อจัดการที่เก็บคีย์ (ฐานข้อมูล) ของคีย์การเข้ารหัส ระบบใบรับรอง X.509 และใบรับรองที่เชื่อถือได้
ในการสร้างคีย์ ให้เปิดพรอมต์คำสั่งและเรียกใช้คำสั่งต่อไปนี้:
keytool -genkey -alias SIGNATURE_ALIAS -keyalg RSA -keystore PATH_TO_KEYSTORE -keysize 2048 -validity 10000
พารามิเตอร์:
- genkey - คำสั่งสร้างคีย์
- alias - ระบุนามแฝงที่จะใช้ในอนาคตเพื่ออ้างถึงรายการที่เก็บคีย์ที่มีคีย์ที่จะถูกสร้างขึ้น
- keyalg - ชื่ออัลกอริทึมคีย์
- keystore - ชื่อของที่เก็บคีย์ที่คุณใช้
- keysize - ขนาดของแต่ละคีย์ที่จะสร้าง
- validity - ผลบังคับใช้ของคีย์เป็นจำนวนวัน
ตัวอย่าง:
หากจัดเตรียม Key Vault, PATH_TO_KEYSTORE ควรมีนามสกุล .pfx
keytool -genkey -alias powerappswrap -keyalg RSA -keystore powerappswrap.pfx -keysize 2048 -validity 10000
หากเตรียมการลงชื่อด้วยตนเอง PATH_TO_KEYSTORE ควรมีนามสกุล .jks
keytool -genkey -alias powerappswrap -keyalg RSA -keystore powerappswrap.jks -keysize 2048 -validity 10000
สร้างแฮชลายเซ็น
หมายเหตุ
ข้ามไปที่ ลงชื่อในแพคเกจ APK หากคุณได้สร้างคีย์และแฮชลายเซ็นไว้แล้วขณะที่สร้าง การลงทะเบียนแอป
หลังจากสร้างคีย์ มีการใช้คำสั่ง exportcert ใน keytool เพื่อส่งออกใบรับรองที่เก็บคีย์
keytool -exportcert -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE | openssl sha1 -binary | openssl base64
พารามิเตอร์:
- exportcert - อ่านใบรับรองที่เชื่อมโยงกับนามแฝงจากที่เก็บคีย์และเก็บไว้ในไฟล์ cert_file เมื่อไม่ได้ระบุไฟล์ ใบรับรองจะถูกส่งออกไปยัง stdout
- นามแฝง - นามแฝงที่ใช้ขณะสร้างคีย์ ก่อนหน้านี้
- keystore - ชื่อของที่เก็บคีย์ที่คุณใช้
- opensl - สร้างคีย์ SHA1 สำหรับ Android
เพิ่มลายเซ็นที่สร้างขึ้นมีใน URI เปลี่ยนเส้นทาง ขณะที่ ลงทะเบียนแอป
แปลง SHA1 hex เป็นแฮชลายเซ็นที่เข้ารหัสแบบ Base64 ด้วยตนเอง
คุณอาจเห็นข้อผิดพลาดต่อไปนี้หากแฮชลายเซ็นของคุณเข้ารหัสไม่ถูกต้องหรือไม่เป็นที่ยอมรับในพอร์ทัล Azure:
"แฮชลายเซ็นต้องเป็น SHA1 ที่เข้ารหัสแบบ base64"
เมื่อข้อผิดพลาดนี้ปรากฏขึ้น ให้ลองสร้างแฮชลายเซ็นโดยใช้ขั้นตอนต่อไปนี้แทน:
- เรียกใช้
keytool -list -v -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE
เพื่อแสดงรายการข้อมูลใบรับรองในโหมดรายละเอียด - คัดลอกค่า SHA1 ภายใต้ส่วน ลายนิ้วมือใบรับรอง จากเอาต์พุต ตรวจสอบให้แน่ใจว่าคุณคัดลอกเฉพาะค่าเลขฐานสิบหก
ตัวอย่าง:EF:11:45:3D:F1:72:D9:8C:43:32:CD:0A:49:C2:E4:75:2D:B3:2D:9F
- ใช้ตัวแปลง "เลขฐานสิบหกเป็น Base64" ที่มีอยู่เพื่อแปลงค่าเลขฐานสิบหกของลายนิ้วมือใบรับรองที่คัดลอกเป็นค่าที่เข้ารหัสแบบ Base64
ตัวอย่างของค่าที่เข้ารหัสแบบ Base64:8CPPeLaz9etdqQyaQubcqsy2Tw=
- คัดลอกค่าที่เข้ารหัสแบบ Base64 ที่สร้างขึ้นเป็น แฮชลายเซ็น ในพอร์ทัล Azure ขณะที่ ลงทะเบียนแอป
ลงชื่อในแพคเกจ APK
การลงชื่อในแพคเกจ APK เราจะใช้ เครื่องมือ apksigner เครื่องมือนี้ให้คุณสามารถลงชื่อใน APK และตรวจสอบให้แน่ใจว่าลายเซ็นแพคเกจ APK ได้รับการตรวจสอบสำเร็จในแพลตฟอร์ม Android ทั้งหมดที่รองรับโดย APK
ค้นหา apksigner ของคุณ
ตรวจสอบพาธ Android SDK ใน Android Studio
เลือก เครื่องมือ > SDK Manager > ตำแหน่ง Android SDK
หากใช้ iOS ให้ตรวจสอบไฟล์ apksigner จากไดเรกทอรี เวอร์ชัน buildTools:
ไปที่ไดเรกทอรี SDK > build-tools > buildToolsVersion > lib และตรวจสอบไฟล์ apksigner.jar
ใช้ไฟล์ apksigner
เรียกใช้คำสั่งต่อไปนี้เพื่อใช้ apksigner และลงนามในแพคเกจ:
apksigner.bat sign --ks PATH_TO_KEYSTORE --ks-key-alias KEY_ALIAS PATH_TO_APK
พารามิเตอร์:
- ks - พาธไปยังที่เก็บคีย์
- ks-key-alias - พาธนามแฝงของคีย์ไปยังไฟล์ APK
เมื่อได้รับแจ้ง ให้ป้อนรหัสผ่าน
ข้อมูลเพิ่มเติม: เครื่องมือบรรทัดคำสั่ง Android Studio: apksigner
แจกจ่ายแอป
คุณสามารถโฮสต์แพคเกจบนบริการการกระจาย เช่น App Center หากต้องการเผยแพร่โดยใช้ Microsoft Intune โปรดดูที่ เพิ่มแอปสายงานธุรกิจ Android ให้กับ Microsoft Intune หากต้องการเรียนรู้เกี่ยวกับการให้แอปเข้าถึงบริการการป้องกันแอป Intune โปรดดู ให้สิทธิ์แอปของคุณเข้าถึงบริการป้องกันแอป Intune