Android Studio: วิธีสร้าง apk ที่ลงชื่อโดยใช้ Gradle


90

ฉันค้นหาบน Google และ SO แต่ไม่พบคำตอบของฉัน

นี่เป็นครั้งแรกที่ฉันทำงานกับระบบ gradle และตอนนี้ฉันมาถึงจุดที่สร้าง APK ที่ลงชื่อแล้วเพื่ออัปโหลดไปยัง Google Play (โครงการนำเข้าจาก eclipse)

ตอนนี้ฉันได้อ่านส่วนนี้แล้วhttp://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Building-and-Tasksที่คุณควรเพิ่มลงsigningConfigsในbuild.gradle

ฉันได้เพิ่มบรรทัดเหล่านี้แล้วและตอนนี้ฉันเห็นว่าคุณต้องเรียกใช้./gradlew assembleReleaseแต่การเรียกใช้สิ่งนี้ในผลตอบแทน cmd ของฉัน 'gradle' ไม่รู้จักเป็นคำสั่งภายในหรือภายนอกโปรแกรมที่ใช้งานได้หรือไฟล์แบตช์ ฉันได้ลองคลิกขวาที่ build.gradle แล้วเรียกใช้โดยบอกว่ามันประสบความสำเร็จ แต่เมื่อฉันดูในโฟลเดอร์ build / apk มีเพียงไฟล์ที่เรียกว่าapp-debug-unaligned.apk

แล้วฉันจะสร้าง apk ที่ลงชื่อโดยใช้ระบบ Gradle ได้อย่างไร?



@ScottBarta ทำเคล็ดลับบางส่วนเมื่อฉันเปลี่ยนเป็นโหมดปล่อยและวิ่งไล่ระดับฉันยังคงพบข้อผิดพลาด แต่การใช้เขาสร้าง> สร้าง apk ที่ลงชื่อผ่านเมนูในที่สุดมันก็ใช้ได้ผล! ขอบคุณฉันโหวตคุณที่ลิงค์ที่ให้มา
Gooey

ลงชื่อด้วยเวอร์ชัน v1 (ลายเซ็น jar) หรือ v2 (ลายเซ็น APK เต็มรูปแบบ) จากไฟล์ gradle? วิธีแก้ปัญหาที่นี่: stackoverflow.com/questions/57943259/…
user1506104

คำตอบ:


97

มีสามวิธีในการสร้างงานสร้างของคุณตามbuildType. (ในกรณีของคุณจะเปิดตัว แต่สามารถตั้งชื่ออะไรก็ได้ที่คุณต้องการ)

  1. ไปที่ Gradle Task ในแผงด้านขวาของ Android Studio แล้วค้นหาassembleReleaseหรือassemble(#your_defined_buildtype)ใต้ Module Tasks

  2. ไปที่ Build Variant ในแผงด้านซ้ายและเลือกบิลด์จากเมนูแบบเลื่อนลง

  3. ไปที่ไดเรกทอรีรากของโครงการใน File Explore และเปิด cmd / terminal แล้วเรียกใช้:

    ลินุกซ์: ./gradlew assembleRelease or assemble(#your_defined_buildtype)

    Windows: gradlew assembleRelease or assemble(#your_defined_buildtype)

หากคุณต้องการที่จะทำสร้างรีลีส (เท่านั้น) คุณสามารถใช้>Build Generate Signed apkสำหรับประเภทบิลด์อื่น ๆ จะมีเพียงสามตัวเลือกข้างต้นเท่านั้น

คุณสามารถค้นหา APK ที่สร้างขึ้นในmodule/buildไดเร็กทอรีของคุณโดยมีชื่อประเภทบิวด์อยู่ในนั้น


4
สิ่งนี้จะสร้าง apk ที่เซ็นชื่อก็ต่อเมื่อคุณมีการกำหนดค่าการสร้างใน build.gradle ของคุณ หากคุณเก็บข้อมูลนี้ไว้ในเครื่องมือจัดการซอร์สโค้ดหรือแชร์กับคนอื่น ๆ คุณควรพิจารณาแยกข้อมูลรับรองของคีย์การลงนามออกจากซอร์สโค้ดของคุณ
Janusz

สร้าง> สร้าง apk ที่ลงนาม ... มันง่ายอย่างนั้น
Atul

61

เป็นไปได้ที่จะใช้โปรเจ็กต์ Android Studio gradle ที่มีอยู่และสร้าง / เซ็นชื่อจากบรรทัดคำสั่งโดยไม่ต้องแก้ไขไฟล์ใด ๆ สิ่งนี้ทำให้ดีมากสำหรับการจัดเก็บโครงการของคุณในการควบคุมเวอร์ชันในขณะที่แยกคีย์และรหัสผ่านของคุณ:

./gradlew assembleRelease -Pandroid.injected.signing.store.file=$KEYFILE -Pandroid.injected.signing.store.password=$STORE_PASSWORD -Pandroid.injected.signing.key.alias=$KEY_ALIAS -Pandroid.injected.signing.key.password=$KEY_PASSWORD

1
เนื่องจากเราต้องส่งซอร์สโค้ดให้เพื่อนร่วมทางนี่เป็นวิธีที่ดีที่สุดในการเก็บข้อมูลที่เก็บคีย์ไว้เป็นความลับ ขอบคุณ.
Yeung

3
อย่างไรก็ตามการทำความรู้จักกับandroid.injected.signing. * การดำรงอยู่ของคุณสมบัติเหล่านี้?
Tixeon

ฉันได้รับข้อมูลนี้จาก Xav จากทีม Android Studio และฉันไม่รู้ว่ามีตัวแปรอื่น ๆ เช่นนี้หรือไม่
Wayne Piekarski

ฉันได้รับ java.lang.RuntimeException: com.android.ide.common.signing.KeytoolException: ไม่สามารถอ่านคีย์ XXXXXX จากร้านค้า "C: \ Users \ somedirectory \ Desktop \ someKey.jks": ไม่มีคีย์ที่มีนามแฝง 'XXXXXX' พบในที่เก็บคีย์ C: \ Users \ somedirectory \ Desktop \ someKey.jks ทำไมถึงเป็นเช่นนั้น?
Archie G. Quiñones

40

คุณสามารถใช้รหัสนี้

android {
   ...
    signingConfigs {
        release {
            storeFile file("../your_key_store_file.jks")
            storePassword "some_password"
            keyAlias "alias_name"
            keyPassword "key_password"
        }
    }

    buildTypes {

        release {
            signingConfig signingConfigs.release
        }
    }
   ...
}

จากนั้นจึงเรียกใช้เทอร์มินัลของคุณ

./gradlew assembleRelease

คุณจะได้รับ apk ที่

ของคุณ android-app / build / outputs / apk / your-android-app-release.apk


@ozcanovunc โปรดตรวจสอบเส้นทางที่เก็บคีย์ของคุณอีกครั้งอาจเป็นเส้นทางของคุณที่กำหนดผิด
bhavesh kaila

เมื่อทำเช่นนี้โอกาสที่คุณbuild.gradleจะเข้าสู่การควบคุมเวอร์ชันและรหัสผ่านของคุณก็เช่นกัน! พิจารณาใช้เส้นทางอื่นเมื่อความปลอดภัยเป็นสิ่งสำคัญในโครงการของคุณ
Marco7757

1
ปล่อยไม่ทำงาน ใช้แทนการประกอบ gradlew Release
Sathish Gadde


-3

สร้างเมนู> สร้าง apk ที่ลงนาม


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

11
มันบอกว่าการดีบักเปิดอยู่ ... ใน android studio ทางด้านซ้ายควรมีแท็บที่ระบุว่า 'สร้างตัวแปร' ... คลิกที่มันและเปลี่ยนทุกอย่างจาก 'debug' เป็น 'release' ... หลังจากนั้น สร้าง apk ที่ลงชื่ออีกครั้ง ...
trickoutdavid

2
ใช้ไม่ได้แล้ว! ตัวอย่างเช่น APK ที่สร้างมี BuildConfig.DEBUG ตั้งค่าเป็น true สิ่งนี้ทำให้ฉันไม่มีปัญหาตอนนี้คุณต้องใช้เมธอด gradlew AssembleRelease
Ben Clayton

@BenClayton คุณพูดถูกจริงๆ! ฉันเสียเวลาไปหลายชั่วโมงเพราะสิ่งนี้! อีกหนึ่ง "ข้อผิดพลาด" ที่น่ารำคาญมากใน Android Studio - ไม่มีปัญหาใด ๆ ...
sjkm

ฉันสงสัยว่าทำไมขั้นตอนง่ายๆนี้ไม่สามารถเป็นวิธีที่เหมาะสมที่สุดในการสร้าง apk ที่มีการลงนามตามที่กล่าวไว้อย่างชัดเจน ขั้นตอนนี้สร้างแอปและทำงานได้อย่างสมบูรณ์แบบสำหรับฉันโดยไม่มีปัญหาใด ๆ แต่คำตอบอื่น ๆ อีกมากมายทำให้ฉันสับสนว่าสิ่งที่ฉันทำอาจไม่ถูกต้องหรืออะไร
Atul
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.