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

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

หากต้องการเรียกใช้งานด้วย Wrapper ให้ใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้จาก หน้าต่างเทอร์มินัล (จาก 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) และบิลด์รุ่นต้องรับรองด้วยคีย์ส่วนตัวของคุณเอง

หากต้องการสร้างแอปสำหรับการเปิดตัว คุณต้อง รับรองแอปด้วยคีย์ Signing ที่เหมาะสม อย่างไรก็ตาม หากคุณเพิ่งเริ่มต้น คุณสามารถเรียกใช้แอปได้อย่างรวดเร็วบน โปรแกรมจำลองหรืออุปกรณ์ที่เชื่อมต่อโดย การสร้าง 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

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

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

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

สร้าง Bundle หรือ APK ของรุ่น

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

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

หากต้องการใช้ Android Emulator คุณต้องสร้าง Android Virtual อุปกรณ์ (AVD) ที่ใช้ Android Studio

เมื่อมี AVD แล้ว ให้เริ่มโปรแกรมจำลอง Android และติดตั้ง ดังนี้

  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 เล่น สิ่งที่ต่างจาก APK คือคุณจะทำให้ App Bundle ใช้งานได้ในอุปกรณ์โดยตรงไม่ได้ ดังนั้น หากต้องการทดสอบหรือแชร์ APK กับผู้อื่นอย่างรวดเร็ว ไม่เช่นนั้น คุณควรสร้าง APK แทน

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

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

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

./gradlew :base:bundleDebug

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

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

jarsigner -keystore pathToKeystore app-release.aab keyAlias

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

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

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

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

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

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

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

ดาวน์โหลด AAPT2

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

หากต้องการดาวน์โหลด 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 ของแต่ละโมดูล คล้ายกับรูปแบบ Android App Bundle เช่น คุณควรสร้างไฟล์ base.zip สำหรับโมดูลฐานของแอปและ จัดระเบียบเนื้อหาดังนี้

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

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

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

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

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

ตารางต่อไปนี้อธิบายแฟล็กสำหรับคำสั่ง 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 ทั้งหมดของแอป ซึ่งอาจ มีประโยชน์กับขั้นตอนอื่นๆ ใน Toolchain หรือ App Store

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

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

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

เช่น คุณควบคุมได้ว่าจะเปิดใช้ APK การกำหนดค่าหมวดหมู่ใด หรือ ปิดใช้ ตัวอย่างต่อไปนี้ของไฟล์ BundleConfig.json ถูกปิดใช้ 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")
            ...
        }
    }
}

ดึงดูด

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) ให้กับคุณ

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

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