สร้างแอปจากบรรทัดคำสั่ง

คุณเรียกใช้งานสร้างทั้งหมดที่มีให้สำหรับโปรเจ็กต์ Android ได้โดยใช้เครื่องมือบรรทัดคำสั่ง Gradle wrapper โดยจะมีให้ใช้งานเป็นไฟล์แบตช์สำหรับ Windows (gradlew.bat) และเชลล์สคริปต์สำหรับ Linux และ Mac (gradlew.sh) และเข้าถึงได้จากรูทของแต่ละโปรเจ็กต์ที่คุณสร้างด้วย Android Studio

หากต้องการเรียกใช้งานด้วยไฟล์รัปเปอร์ ให้ใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้จากหน้าต่างเทอร์มินัล (จาก Android Studio ให้เลือกดู > หน้าต่างเครื่องมือ > เทอร์มินัล)

  • ใน Command Shell ของ Windows
    gradlew task-name
  • ใน Mac, Linux หรือ Windows PowerShell
    ./gradlew task-name

หากต้องการดูรายการงานสร้างทั้งหมดที่ใช้ได้สำหรับโปรเจ็กต์ ให้ทำดังนี้tasks

gradlew tasks

ส่วนที่เหลือของหน้านี้จะอธิบายพื้นฐานในการสร้างและเรียกใช้แอปด้วย Gradle Wrapper ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีตั้งค่าบิลด์ Android ได้ที่กําหนดค่าบิลด์

หากต้องการใช้เครื่องมือของ Android Studio แทนเครื่องมือบรรทัดคำสั่ง โปรดดูหัวข้อสร้างและเรียกใช้แอป

เกี่ยวกับประเภทบิลด์

โดยค่าเริ่มต้น แอป Android ทุกแอปจะมีบิลด์ 2 ประเภท ได้แก่ บิลด์แก้ไขข้อบกพร่องสำหรับแก้ไขข้อบกพร่องของแอป และบิลด์รุ่นสำหรับเผยแพร่แอปแก่ผู้ใช้ เอาต์พุตที่ได้จากการบิลด์แต่ละครั้งต้องได้รับการรับรองด้วยใบรับรองก่อนจึงจะติดตั้งแอปลงในอุปกรณ์ได้ บิลด์แก้ไขข้อบกพร่องจะได้รับการรับรองโดยอัตโนมัติด้วยคีย์แก้ไขข้อบกพร่องที่เครื่องมือ SDK มีให้ (ไม่ปลอดภัยและคุณไม่สามารถเผยแพร่ไปยัง Google Play Store ได้) และบิลด์รุ่นที่ใช้งานจริงต้องได้รับการรับรองด้วยคีย์ส่วนตัวของคุณเอง

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

นอกจากนี้ คุณยังกำหนดประเภทบิลด์ที่กำหนดเองในbuild.gradle.kts ไฟล์และกำหนดค่าให้ลงนามเป็นบิลด์แก้ไขข้อบกพร่องได้โดยใส่ debuggable true ดูข้อมูลเพิ่มเติมได้ที่กำหนดค่าตัวแปรการสร้าง

สร้างและทำให้ APK ใช้งานได้

แม้ว่าการสร้าง App Bundle จะเป็นวิธีที่ดีที่สุดในการแพ็กเกจแอปและอัปโหลดไปยัง Play Console แต่การสร้าง APK จะเหมาะกว่าเมื่อคุณต้องการทดสอบบิลด์แก้ไขข้อบกพร่องอย่างรวดเร็วหรือแชร์แอปเป็นอาร์ติแฟกต์ที่นำไปใช้งานได้กับผู้อื่น

สร้าง APK สำหรับแก้ไขข้อบกพร่อง

คุณสร้าง APK สำหรับการแก้ไขข้อบกพร่องได้หากต้องการทดสอบและแก้ไขข้อบกพร่องของแอปทันที APK ที่ใช้แก้ไขข้อบกพร่องจะได้รับการรับรองด้วยคีย์แก้ไขข้อบกพร่องที่เครื่องมือ SDK มีให้ และอนุญาตให้แก้ไขข้อบกพร่องผ่าน adb

หากต้องการสร้าง APK สำหรับการแก้ไขข้อบกพร่อง ให้เปิดบรรทัดคำสั่งแล้วไปที่รูทของไดเรกทอรีโปรเจ็กต์ หากต้องการเริ่มใช้งานบิลด์แก้ไขข้อบกพร่อง ให้เรียกใช้งาน assembleDebug ดังนี้

gradlew assembleDebug

ซึ่งจะสร้าง APK ชื่อ module_name-debug.apk ใน project_name/module_name/build/outputs/apk/ ไฟล์ได้รับการรับรองด้วยคีย์แก้ไขข้อบกพร่องและสอดคล้องกับ zipalign แล้ว คุณจึงติดตั้งไฟล์ในอุปกรณ์ได้ทันที

หรือหากต้องการสร้าง APK และติดตั้งในโปรแกรมจำลองที่ทำงานอยู่หรืออุปกรณ์ที่เชื่อมต่ออยู่ทันที ให้เรียกใช้ installDebug แทน โดยทำดังนี้

gradlew installDebug

ส่วน "แก้ไขข้อบกพร่อง" ในชื่องานด้านบนเป็นเพียงชื่อตัวแปรบิลด์เวอร์ชัน Camel Case คุณจึงแทนที่ด้วยประเภทบิลด์หรือตัวแปรที่ต้องการประกอบหรือติดตั้งได้ เช่น หากมีตัวแปรผลิตภัณฑ์ "demo" คุณจะสร้างเวอร์ชันแก้ไขข้อบกพร่องได้ด้วยงานassembleDemoDebug

หากต้องการดูงานสร้างและงานติดตั้งทั้งหมดที่ใช้ได้กับตัวแปรแต่ละรายการ (รวมถึงงานถอนการติดตั้ง) ให้เรียกใช้งาน tasks

นอกจากนี้ โปรดดูส่วนเกี่ยวกับวิธีเรียกใช้แอปในโปรแกรมจำลองและเรียกใช้แอปในอุปกรณ์

สร้าง App Bundle หรือ APK เวอร์ชันที่ใช้งานจริง

เมื่อพร้อมเผยแพร่และจัดจำหน่ายแอปแล้ว คุณต้องสร้าง App Bundle หรือ APK ของรุ่นที่รับรองด้วยคีย์ส่วนตัว ดูข้อมูลเพิ่มเติมได้ที่ส่วนเกี่ยวกับวิธีลงชื่อแอปจากบรรทัดคำสั่ง

ทำให้แอปใช้งานได้ในโปรแกรมจำลอง

หากต้องการใช้โปรแกรมจำลอง Android คุณต้องสร้างอุปกรณ์เสมือน Android (AVD) โดยใช้ Android Studio

เมื่อสร้าง AVD แล้ว ให้เปิด Android Emulator และติดตั้งแอปดังนี้

  1. ในบรรทัดคำสั่ง ให้ไปที่ android_sdk/tools/ แล้วเริ่มโปรแกรมจำลองโดยระบุ AVD

    emulator -avd avd_name

    หากไม่แน่ใจเกี่ยวกับชื่อ AVD ให้เรียกใช้ emulator -list-avds

  2. ตอนนี้คุณติดตั้งแอปได้โดยใช้งานติดตั้ง Gradle อย่างใดอย่างหนึ่งที่กล่าวถึงในส่วนเกี่ยวกับวิธีสร้าง APK สำหรับแก้ไขข้อบกพร่อง หรือเครื่องมือ adb

    หาก APK สร้างขึ้นโดยใช้ SDK เวอร์ชันตัวอย่างสำหรับนักพัฒนาแอป (หาก targetSdkVersion เป็นตัวอักษรแทนตัวเลข) คุณต้องใส่ตัวเลือก -t กับคำสั่ง install เพื่อติดตั้ง APK ทดสอบ

    adb install path/to/your_app.apk
    

    APK ทั้งหมดที่คุณสร้างจะบันทึกไว้ใน project_name/module_name/build/outputs/apk/

ดูข้อมูลเพิ่มเติมได้ที่เรียกใช้แอปในโปรแกรมจำลอง Android

ติดตั้งใช้งานแอปในอุปกรณ์จริง

คุณต้องเปิดใช้การแก้ไขข้อบกพร่องผ่าน USB ในอุปกรณ์ก่อนจึงจะเรียกใช้แอปในอุปกรณ์ได้ ตัวเลือกนี้จะอยู่ในส่วนการตั้งค่า > ตัวเลือกสำหรับนักพัฒนาแอป

หมายเหตุ: ใน Android 4.2 ขึ้นไป ระบบจะซ่อนตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์ไว้โดยค่าเริ่มต้น หากต้องการทำให้ฟีเจอร์นี้พร้อมใช้งาน ให้ไปที่การตั้งค่า > เกี่ยวกับโทรศัพท์ แล้วแตะหมายเลขบิลด์ 7 ครั้ง กลับไปที่หน้าจอก่อนหน้าเพื่อค้นหาตัวเลือกสำหรับนักพัฒนาแอป

เมื่อตั้งค่าและเชื่อมต่ออุปกรณ์ผ่าน USB แล้ว คุณจะติดตั้งแอปได้โดยใช้งานติดตั้ง Gradle ที่กล่าวถึงในส่วนเกี่ยวกับวิธีสร้าง APK สำหรับการแก้ไขข้อบกพร่องหรือเครื่องมือ adb ดังนี้

adb -d install path/to/your_app.apk

APK ทั้งหมดที่คุณสร้างจะบันทึกไว้ใน project_name/module_name/build/outputs/apk/

โปรดดูข้อมูลเพิ่มเติมที่หัวข้อเรียกใช้แอปในอุปกรณ์ฮาร์ดแวร์

สร้าง App Bundle

Android App Bundle มีโค้ดและทรัพยากรที่คอมไพล์แล้วทั้งหมดของแอป แต่เลื่อนการสร้างและการรับรอง APK ไปยัง Google Play คุณไม่สามารถติดตั้ง App Bundle ลงในอุปกรณ์โดยตรงได้ ซึ่งต่างจาก APK ดังนั้น หากต้องการทดสอบหรือแชร์ APK กับผู้อื่นอย่างรวดเร็ว คุณควรสร้าง APK แทน

วิธีที่ง่ายที่สุดในการสร้าง App Bundle คือการใช้ Android Studio อย่างไรก็ตาม หากต้องการสร้าง App Bundle จากบรรทัดคำสั่ง คุณสามารถใช้ Gradle หรือ bundletool ตามที่อธิบายไว้ในส่วนด้านล่าง

สร้าง App Bundle ด้วย Gradle

หากต้องการสร้าง App Bundle จากบรรทัดคำสั่ง ให้เรียกใช้ bundleVariantงาน Gradle ในโมดูลฐานของแอป ตัวอย่างเช่น คำสั่งต่อไปนี้จะสร้าง App Bundle สำหรับเวอร์ชันแก้ไขข้อบกพร่องของโมดูลฐาน

./gradlew :base:bundleDebug

หากต้องการสร้าง App Bundle ที่เซ็นชื่อแล้วเพื่ออัปโหลดไปยัง Play Console คุณต้องกำหนดค่าไฟล์ build.gradle.kts ของโมดูลพื้นฐานด้วยข้อมูลการเซ็นชื่อของแอปก่อน ดูข้อมูลเพิ่มเติมได้ที่ส่วนวิธีกําหนดค่า Gradle เพื่อลงนามแอป จากนั้นคุณจะสร้างแอปเวอร์ชันที่เผยแพร่ได้ และ Gradle จะสร้าง App Bundle โดยอัตโนมัติและลงนามด้วยข้อมูลการลงนามที่คุณระบุไว้ในไฟล์ build.gradle.kts

หากต้องการลงนาม App Bundle เป็นขั้นตอนแยกต่างหากแทน ให้ใช้ jarsigner เพื่อลงนาม App Bundle จากบรรทัดคำสั่ง คำสั่งในการสร้าง App Bundle

jarsigner -keystore pathToKeystore app-release.aab keyAlias

สร้าง App Bundle โดยใช้ bundletool

bundletool เป็นเครื่องมือบรรทัดคำสั่งที่ Android Studio, ปลั๊กอิน Android Gradle และ Google Play ใช้เพื่อแปลงโค้ดและทรัพยากรที่คอมไพล์แล้วของแอปเป็น App Bundle และสร้าง APK ที่นำไปใช้งานได้จาก App Bundle เหล่านั้น

ดังนั้น แม้ว่าการทดสอบ App Bundle ด้วย bundletool และสร้างวิธีสร้าง APK ของ Google Play ซ้ำในเครื่องจะมีประโยชน์ แต่โดยทั่วไปแล้วคุณไม่จําเป็นต้องเรียกใช้ bundletool เพื่อสร้าง App Bundle เอง คุณควรใช้ Android Studio หรืองาน Gradle ตามที่อธิบายไว้ในส่วนก่อนหน้า

อย่างไรก็ตาม หากไม่ต้องการใช้ Android Studio หรืองาน Gradle เพื่อสร้าง Bundle เช่น หากคุณใช้ชุดเครื่องมือบิลด์ที่กำหนดเอง คุณสามารถใช้ bundletool จากบรรทัดคำสั่งเพื่อสร้าง App Bundle จากโค้ดและทรัพยากรที่คอมไพล์ไว้ล่วงหน้า หากยังไม่ได้ดำเนินการ ให้ ดาวน์โหลด bundletool จากที่เก็บ GitHub

ส่วนนี้จะอธิบายวิธีแพ็กเกจโค้ดและทรัพยากรที่คอมไพล์ของแอป รวมถึงวิธีใช้ bundletool จากบรรทัดคำสั่งเพื่อแปลงเป็น Android App Bundle

สร้างไฟล์ Manifest และทรัพยากรในรูปแบบ Proto

bundletool กำหนดให้ข้อมูลบางอย่างเกี่ยวกับโปรเจ็กต์แอป เช่น ไฟล์ Manifest และทรัพยากรของแอป ต้องอยู่ในรูปแบบ Protocol Buffer ของ Google หรือที่เรียกว่า "protobuf" และใช้นามสกุลไฟล์ *.pb Protobufs มอบกลไกที่เป็นกลางทางภาษา เป็นกลางทางแพลตฟอร์ม และขยายได้สำหรับการแปลง Structured Data เป็นรูปแบบอนุกรม ซึ่งคล้ายกับ XML แต่มีขนาดเล็กกว่า เร็วกว่า และง่ายกว่า

ดาวน์โหลด AAPT2

คุณสามารถสร้างไฟล์ Manifest และตารางทรัพยากรของแอปในรูปแบบ protobuf โดยใช้ AAPT2 เวอร์ชันล่าสุดจากที่เก็บ Maven ของ Google

หากต้องการดาวน์โหลด AAPT2 จากที่เก็บ Maven ของ Google ให้ทําดังนี้

  1. ไปที่ com.android.tools.build > aapt2 ในดัชนีที่เก็บ
  2. คัดลอกชื่อ AAPT2 เวอร์ชันล่าสุด
  3. แทรกชื่อเวอร์ชันที่คุณคัดลอกลงใน URL ต่อไปนี้และระบุระบบปฏิบัติการเป้าหมาย https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/aapt2-version/aapt2-aapt2-version-[windows | linux | osx].jar

    เช่น หากต้องการดาวน์โหลดเวอร์ชัน 3.2.0-alpha18-4804415 สำหรับ Windows คุณจะใช้คำสั่ง ดังนี้ https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/3.2.0-alpha18-4804415/aapt2-3.2.0-alpha18-4804415-windows.jar

  4. ไปที่ URL ในเบราว์เซอร์ แล้ว AAPT2 จะเริ่มดาวน์โหลดในไม่ช้า

  5. แตกไฟล์ JAR ที่เพิ่งดาวน์โหลด

ใช้ AAPT2 เพื่อคอมไพล์ทรัพยากรของแอปด้วยคำสั่งต่อไปนี้

aapt2 compile \
project_root/module_root/src/main/res/drawable/Image1.png \
project_root/module_root/src/main/res/drawable/Image2.png \
-o compiled_resources/

ในระหว่างระยะการลิงก์ที่ AAPT2 ลิงก์ทรัพยากรที่คอมไพล์ไว้ต่างๆ ของคุณเป็น APK ไฟล์เดียว ให้สั่งให้ AAPT2 แปลงไฟล์ Manifest และทรัพยากรที่คอมไพล์ไว้ของแอปเป็นรูปแบบ protobuf โดยใส่ Flag --proto-format ดังที่แสดงด้านล่าง

aapt2 link --proto-format -o output.apk \
-I android_sdk/platforms/android_version/android.jar \
--manifest project_root/module_root/src/main/AndroidManifest.xml \
-R compiled_resources/*.flat \
--auto-add-overlay

จากนั้นคุณสามารถดึงเนื้อหาจาก APK เอาต์พุต เช่น AndroidManifest.xml, resources.pb และไฟล์ทรัพยากรอื่นๆ ของแอป ซึ่งตอนนี้อยู่ในรูปแบบ protobuf คุณต้องใช้ไฟล์เหล่านี้เมื่อเตรียมอินพุตที่ bundletool ต้องใช้ในการสร้าง App Bundle ตามที่อธิบายไว้ในส่วนต่อไปนี้

แพ็กเกจโค้ดและทรัพยากรที่คอมไพล์ไว้ล่วงหน้า

ก่อนที่จะใช้ bundletool เพื่อสร้าง App Bundle สําหรับแอป คุณต้องระบุไฟล์ ZIP ที่มีโค้ดและทรัพยากรที่คอมไพล์แล้วสําหรับแต่ละโมดูลแอปก่อน เนื้อหาและการจัดระเบียบของไฟล์ ZIP ของโมดูลแต่ละรายการจะคล้ายกับรูปแบบ App Bundle ของ Android มาก เช่น คุณควรสร้างไฟล์ base.zip สำหรับโมดูลฐานของแอปและจัดระเบียบเนื้อหาดังนี้

ไฟล์หรือไดเรกทอรี คำอธิบาย
manifest/AndroidManifest.xml ไฟล์ Manifest ของโมดูลในรูปแบบ protobuf
dex/... ไดเรกทอรีที่มีไฟล์ DEX ที่คอมไพล์ของแอปอย่างน้อย 1 ไฟล์ ไฟล์เหล่านี้ควรตั้งชื่อดังนี้ classes.dex, classes2.dex, classes3.dex เป็นต้น
res/... มีทรัพยากรของโมดูลในรูปแบบ protobuf สําหรับการกําหนดค่าอุปกรณ์ทั้งหมด ไดเรกทอรีย่อยและไฟล์ควรจัดระเบียบให้คล้ายกับของ APK ทั่วไป
root/..., assets/... และ lib/... ซึ่งไดเรกทอรีเหล่านี้จะเหมือนกับไดเรกทอรีที่อธิบายไว้ในส่วนรูปแบบ Android App Bundle
resources.pb ตารางทรัพยากรของแอปในรูปแบบ protobuf

หลังจากเตรียมไฟล์ ZIP สำหรับโมดูลแต่ละรายการของแอปแล้ว คุณสามารถส่งไฟล์เหล่านั้นไปยัง bundletool เพื่อสร้าง App Bundle ตามที่อธิบายไว้ในส่วนต่อไปนี้

สร้าง App Bundle โดยใช้ Bundletool

หากต้องการสร้าง App Bundle ให้ใช้คำสั่ง bundletool build-bundle ดังที่แสดงด้านล่าง

bundletool build-bundle --modules=base.zip --output=mybundle.aab

ตารางต่อไปนี้อธิบาย Flag สําหรับคําสั่ง build-bundle โดยละเอียด

ตั้งค่าสถานะ คำอธิบาย
--modules=path-to-base.zip, path-to-module2.zip,path-to-module3.zip ระบุรายการไฟล์ ZIP ของโมดูลที่ bundletool ควรใช้เพื่อสร้าง App Bundle
--output=path-to-output.aab ระบุเส้นทางและชื่อไฟล์สำหรับไฟล์ *.aab เอาต์พุต
--config=path-to-BundleConfig.json ระบุเส้นทางไปยังไฟล์การกําหนดค่าที่ไม่บังคับซึ่งคุณใช้ปรับแต่งกระบวนการบิลด์ได้ ดูข้อมูลเพิ่มเติมได้ที่ส่วนการปรับแต่งการสร้าง APK ดาวน์สตรีม
--metadata-file=target-bundle-path:local-file-path สั่งให้ bundletool แพ็กเกจไฟล์ข้อมูลเมตาที่ไม่บังคับภายใน App Bundle คุณสามารถใช้ไฟล์นี้เพื่อรวมข้อมูล เช่น การแมป ProGuard หรือรายการไฟล์ DEX ทั้งหมดของแอป ซึ่งอาจเป็นประโยชน์ต่อขั้นตอนอื่นๆ ในเครื่องมือทางเทคนิคหรือ App Store

target-bundle-path จะระบุเส้นทางที่สัมพันธ์กับรูทของกลุ่มแอปที่คุณต้องการให้แพ็กเกจไฟล์ข้อมูลเมตา และ local-file-path จะระบุเส้นทางไปยังไฟล์ข้อมูลเมตาในเครื่อง

ปรับแต่งการสร้าง APK ดาวน์สตรีม

App Bundle มีไฟล์ BundleConfig.pb ที่ให้ข้อมูลเมตาที่ App Store เช่น Google Play ต้องการเมื่อสร้าง APK จาก App Bundle แม้ว่า bundletool จะสร้างไฟล์นี้ให้คุณ แต่คุณก็กำหนดค่าข้อมูลเมตาบางแง่มุมในไฟล์ BundleConfig.json และส่งไปยังคำสั่ง bundletool build-bundle ได้ bundletool จะแปลงและผสานไฟล์นี้เข้ากับ protobuf เวอร์ชันที่รวมอยู่ใน App Bundle แต่ละรายการในภายหลัง

เช่น คุณสามารถควบคุมหมวดหมู่ของ APK การกําหนดค่าที่จะเปิดหรือปิดใช้ ตัวอย่างไฟล์ BundleConfig.json ต่อไปนี้จะปิดใช้ APK การกําหนดค่าที่กําหนดเป้าหมายเป็นภาษาที่แตกต่างกัน (กล่าวคือ ทรัพยากรสําหรับทุกภาษาจะรวมอยู่ใน APK พื้นฐานหรือ APK ฟีเจอร์ที่เกี่ยวข้อง)

{
  "optimizations": {
    "splitsConfig": {
      "splitDimension": [{
        "value": "LANGUAGE",
        "negate": true
      }]
    }
  }
}

ในไฟล์ BundleConfig.json คุณยังระบุประเภทไฟล์ที่จะไม่บีบอัดเมื่อแพ็กเกจ APK โดยใช้ รูปแบบ Glob ได้ด้วย ดังนี้

{
  "compression": {
    "uncompressedGlob": ["res/raw/**", "assets/**.uncompressed"]
  }
}

โปรดทราบว่าโดยค่าเริ่มต้น bundletool จะไม่บีบอัดไลบรารีเนทีฟ (ใน Android 6.0 ขึ้นไป) และตารางทรัพยากร (resources.arsc) ของแอป โปรดดูคำอธิบายทั้งหมดเกี่ยวกับสิ่งที่คุณกำหนดค่าได้ใน BundleConfig.json โดยตรวจสอบไฟล์ bundletool config.proto ซึ่งเขียนโดยใช้ไวยากรณ์ Proto3

ทำให้แอปใช้งานได้จาก App Bundle

หากสร้างและลงชื่อ App Bundle แล้ว ให้ใช้ bundletool เพื่อสร้าง APK และนำไปติดตั้งในอุปกรณ์

ยืนยันแอปจากบรรทัดคำสั่ง

คุณไม่จำเป็นต้องใช้ Android Studio เพื่อลงนามแอป คุณสามารถลงนามแอปจากบรรทัดคำสั่งได้โดยใช้ apksigner สำหรับ APK หรือ jarsigner สำหรับ App Bundle หรือกำหนดค่า Gradle ให้ลงนามให้คุณในระหว่างการสร้างก็ได้ ไม่ว่าจะด้วยวิธีใด คุณจะต้องสร้างคีย์ส่วนตัวโดยใช้ keytool ก่อน ดังที่แสดงด้านล่าง

keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias

ตัวอย่างด้านบนจะแจ้งให้คุณป้อนรหัสผ่านสำหรับคีย์สโตร์และคีย์ รวมถึงช่อง "ชื่อที่ระบุ" ของคีย์ จากนั้นจะสร้างที่เก็บคีย์เป็นไฟล์ชื่อ my-release-key.jks โดยบันทึกไว้ในไดเรกทอรีปัจจุบัน (คุณสามารถย้ายที่เก็บคีย์ไปไว้ที่ใดก็ได้) คีย์สโตร์มีคีย์เดียวที่ใช้งานได้ 10,000 วัน

ตอนนี้คุณสามารถลงนาม APK หรือ App Bundle ด้วยตนเอง หรือกำหนดค่า Gradle ให้ลงนามแอประหว่างกระบวนการบิลด์ได้ตามที่อธิบายไว้ในส่วนด้านล่าง

ลงชื่อแอปด้วยตนเองจากบรรทัดคำสั่ง

หากต้องการลงนามใน App Bundle จากบรรทัดคำสั่ง ให้ใช้ jarsigner หากต้องการลงนาม APK แทน คุณต้องใช้ zipalign และ apksigner ตามที่อธิบายไว้ด้านล่าง

  1. เปิดบรรทัดคำสั่ง โดยเลือกดู > หน้าต่างเครื่องมือ > เทอร์มินัลจาก Android Studio แล้วไปยังไดเรกทอรีที่มี APK ที่ไม่ได้ลงชื่อ
  2. จัดเรียง APK ที่ไม่ได้ลงนามโดยใช้ zipalign

    zipalign -v -p 4 my-app-unsigned.apk my-app-unsigned-aligned.apk
    

    zipalign ช่วยให้มั่นใจว่าข้อมูลทั้งหมดที่ไม่ได้บีบอัดจะเริ่มต้นด้วยการจัดแนวไบต์ที่เจาะจงซึ่งสัมพันธ์กับจุดเริ่มต้นของไฟล์ ซึ่งอาจช่วยลดปริมาณ RAM ที่แอปใช้

  3. รับรอง APK ด้วยคีย์ส่วนตัวโดยใช้ apksigner

    apksigner sign --ks my-release-key.jks --out my-app-release.apk my-app-unsigned-aligned.apk
    

    ตัวอย่างนี้จะแสดงผล APK ที่เซ็นชื่อแล้วที่ my-app-release.apk หลังจากเซ็นชื่อด้วยคีย์ส่วนตัวและใบรับรองที่จัดเก็บไว้ในไฟล์ KeyStore ไฟล์เดียว my-release-key.jks

    เครื่องมือ apksigner รองรับตัวเลือกการรับรองอื่นๆ ด้วย ซึ่งรวมถึงการรับรองไฟล์ APK โดยใช้ไฟล์คีย์ส่วนตัวและใบรับรองแยกต่างหาก และการรับรอง APK โดยใช้ผู้ลงนามหลายคน ดูรายละเอียดเพิ่มเติมได้ที่ข้อมูลอ้างอิง apksigner

    หมายเหตุ: หากต้องการใช้เครื่องมือ apksigner คุณต้องติดตั้งเครื่องมือสร้าง Android SDK เวอร์ชันแก้ไข 24.0.3 ขึ้นไป คุณสามารถอัปเดตแพ็กเกจนี้โดยใช้ SDK Manager

  4. ตรวจสอบว่า APK ของคุณมีลายเซ็น โดยทำดังนี้

    apksigner verify my-app-release.apk
    

กำหนดค่า Gradle เพื่อลงนามแอป

เปิดไฟล์ build.gradle.kts ระดับโมดูล แล้วเพิ่มบล็อก signingConfigs {} ที่มีรายการสำหรับ storeFile, storePassword, keyAlias และ keyPassword จากนั้นส่งออบเจ็กต์นั้นไปยังพร็อพเพอร์ตี้ signingConfig ในประเภทบิลด์ เช่น

Kotlin


android {
    ...
    defaultConfig { ... }
    signingConfigs {
        create("release") {
            // You need to specify either an absolute path or include the
            // keystore file in the same directory as the build.gradle file.
            storeFile = file("my-release-key.jks")
            storePassword = "password"
            keyAlias = "my-alias"
            keyPassword = "password"
        }
    }
    buildTypes {
        getByName("release") {
            signingConfig = signingConfigs.getByName("release")
            ...
        }
    }
}

Groovy

android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            // You need to specify either an absolute path or include the
            // keystore file in the same directory as the build.gradle file.
            storeFile file("my-release-key.jks")
            storePassword "password"
            keyAlias "my-alias"
            keyPassword "password"
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
            ...
        }
    }
}
เพื่อเพิ่มความปลอดภัย

ตอนนี้เมื่อคุณสร้างแอปโดยเรียกใช้งาน Gradle แล้ว Gradle จะลงนามในแอป (และเรียกใช้ zipalign) ให้คุณ

นอกจากนี้ เนื่องจากคุณได้กําหนดค่าบิลด์รุ่นด้วยคีย์การรับรองแล้ว งาน "ติดตั้ง" จึงพร้อมใช้งานสําหรับบิลด์ประเภทนั้น คุณจึงสร้าง ปรับ รับรอง และติดตั้ง APK เวอร์ชันที่เผยแพร่บนโปรแกรมจำลองหรืออุปกรณ์ได้ทั้งหมดด้วยงาน installRelease

แอปที่ลงนามด้วยคีย์ส่วนตัวของคุณพร้อมสำหรับการเผยแพร่แล้ว แต่ก่อนอื่นคุณควรอ่านข้อมูลเพิ่มเติมเกี่ยวกับวิธีเผยแพร่แอปและตรวจสอบรายการตรวจสอบการเปิดตัวแอปใน Google Play