คุณเรียกใช้งานสร้างทั้งหมดที่มีให้สำหรับโปรเจ็กต์ 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 และติดตั้งแอปดังนี้
ในบรรทัดคำสั่ง ให้ไปที่
android_sdk/tools/
แล้วเริ่มโปรแกรมจำลองโดยระบุ AVDemulator -avd avd_name
หากไม่แน่ใจเกี่ยวกับชื่อ AVD ให้เรียกใช้
emulator -list-avds
- ตอนนี้คุณติดตั้งแอปได้โดยใช้งานติดตั้ง 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 ให้ทําดังนี้
- ไปที่ com.android.tools.build > aapt2 ในดัชนีที่เก็บ
- คัดลอกชื่อ AAPT2 เวอร์ชันล่าสุด
แทรกชื่อเวอร์ชันที่คุณคัดลอกลงใน 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
ไปที่ URL ในเบราว์เซอร์ แล้ว AAPT2 จะเริ่มดาวน์โหลดในไม่ช้า
แตกไฟล์ 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
ตามที่อธิบายไว้ด้านล่าง
- เปิดบรรทัดคำสั่ง โดยเลือกดู > หน้าต่างเครื่องมือ > เทอร์มินัลจาก Android Studio แล้วไปยังไดเรกทอรีที่มี APK ที่ไม่ได้ลงชื่อ
-
จัดเรียง APK ที่ไม่ได้ลงนามโดยใช้
zipalign
zipalign -v -p 4 my-app-unsigned.apk my-app-unsigned-aligned.apk
zipalign
ช่วยให้มั่นใจว่าข้อมูลทั้งหมดที่ไม่ได้บีบอัดจะเริ่มต้นด้วยการจัดแนวไบต์ที่เจาะจงซึ่งสัมพันธ์กับจุดเริ่มต้นของไฟล์ ซึ่งอาจช่วยลดปริมาณ RAM ที่แอปใช้ -
รับรอง 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 -
ตรวจสอบว่า 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