แชร์ผ่าน


เซ็นชื่อในโค้ดสำหรับ Android

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

ข้อสำคัญ

หากคุณต้องการลงชื่อแอป AAB เพื่อเผยแพร่ใน Google Play แทน โปรดดูที่ ลงชื่อแอปของคุณ

เตรียม PC ของคุณ

คุณต้องมีข้อมูลต่อไปนี้เพื่อเริ่มต้นใช้งาน:

สร้างคีย์

หมายเหตุ

ข้ามไปที่ ลงชื่อในแพคเกจ 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

ภาพหน้าจอพร้อมคำสั่ง keytool โดยใช้พารามิเตอร์ในตัวอย่างด้านบน

สร้างแฮชลายเซ็น

หมายเหตุ

ข้ามไปที่ ลงชื่อในแพคเกจ 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"

เมื่อข้อผิดพลาดนี้ปรากฏขึ้น ให้ลองสร้างแฮชลายเซ็นโดยใช้ขั้นตอนต่อไปนี้แทน:

  1. เรียกใช้ keytool -list -v -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE เพื่อแสดงรายการข้อมูลใบรับรองในโหมดรายละเอียด
  2. คัดลอกค่า SHA1 ภายใต้ส่วน ลายนิ้วมือใบรับรอง จากเอาต์พุต ตรวจสอบให้แน่ใจว่าคุณคัดลอกเฉพาะค่าเลขฐานสิบหก
    ตัวอย่าง: EF:11:45:3D:F1:72:D9:8C:43:32:CD:0A:49:C2:E4:75:2D:B3:2D:9F
  3. ใช้ตัวแปลง "เลขฐานสิบหกเป็น Base64" ที่มีอยู่เพื่อแปลงค่าเลขฐานสิบหกของลายนิ้วมือใบรับรองที่คัดลอกเป็นค่าที่เข้ารหัสแบบ Base64
    ตัวอย่างของค่าที่เข้ารหัสแบบ Base64: 8CPPeLaz9etdqQyaQubcqsy2Tw=
  4. คัดลอกค่าที่เข้ารหัสแบบ Base64 ที่สร้างขึ้นเป็น แฮชลายเซ็น ในพอร์ทัล Azure ขณะที่ ลงทะเบียนแอป

ลงชื่อในแพคเกจ APK

การลงชื่อในแพคเกจ APK เราจะใช้ เครื่องมือ apksigner เครื่องมือนี้ให้คุณสามารถลงชื่อใน APK และตรวจสอบให้แน่ใจว่าลายเซ็นแพคเกจ APK ได้รับการตรวจสอบสำเร็จในแพลตฟอร์ม Android ทั้งหมดที่รองรับโดย APK

ค้นหา apksigner ของคุณ

  1. ตรวจสอบพาธ Android SDK ใน Android Studio

  2. เลือก เครื่องมือ > 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

ดูเพิ่มเติม