Gradle สร้างเฉพาะรสชาติ


94

มีใครบอกฉันได้ไหมว่าเป็นไปได้ไหมที่จะสร้างรสชาติที่แตกต่างผ่านบรรทัดคำสั่ง

ในขณะนี้ฉันยังไม่เห็นวิธีดำเนินการตัวอย่างเช่น:

gradle buildDev 

เมื่อ Dev เป็นหนึ่งในรสชาติที่แตกต่างของฉัน แน่นอนฉันต้องดำเนินการ:

gradle build

และรสชาติทั้งหมดถูกสร้างขึ้น

ฉันต้องการข้ามรสชาติบางอย่าง เป็นไปได้ไหม?

ขอบคุณ


ก่อนอื่นให้ลองรันgradleโดยไม่มีพารามิเตอร์จากนั้นอ่านเอาต์พุต ... จะมีคำใบ้ให้ทำงานgradle tasks...
Selvin

คำตอบ:


156

แม้ว่าจะไม่มีงานเวอร์ชันเฉพาะของbuildรสชาติ แต่ก็มีเวอร์ชันassembleและinstallงานเฉพาะรสชาติ assembleจะสร้าง APK; installจะติดตั้งบนอุปกรณ์ / อีมูเลเตอร์

ยกตัวอย่างเช่นในโครงการตัวอย่างนี้ผมกำหนดรสชาติที่สองของผลิตภัณฑ์ ( chocolateและvanilla) และสามสร้างประเภทรวม ( debug, releaseและmezzanine)

การgradle tasksแสดงและอื่น ๆ :

Build tasks
-----------
assemble - Assembles all variants of all applications and secondary packages.
assembleChocolate - Assembles all builds for flavor Chocolate
assembleChocolateDebug - Assembles the Debug build for flavor Chocolate
assembleChocolateDebugTest - Assembles the Test build for the ChocolateDebug build
assembleChocolateMezzanine - Assembles the Mezzanine build for flavor Chocolate
assembleChocolateRelease - Assembles the Release build for flavor Chocolate
assembleDebug - Assembles all Debug builds
assembleMezzanine - Assembles all Mezzanine builds
assembleRelease - Assembles all Release builds
assembleTest - Assembles all the Test applications
assembleVanilla - Assembles all builds for flavor Vanilla
assembleVanillaDebug - Assembles the Debug build for flavor Vanilla
assembleVanillaDebugTest - Assembles the Test build for the VanillaDebug build
assembleVanillaMezzanine - Assembles the Mezzanine build for flavor Vanilla
assembleVanillaRelease - Assembles the Release build for flavor Vanilla

Install tasks
-------------
installChocolateDebug - Installs the Debug build for flavor Chocolate
installChocolateDebugTest - Installs the Test build for the ChocolateDebug build
installChocolateMezzanine - Installs the Mezzanine build for flavor Chocolate
installChocolateRelease - Installs the Release build for flavor Chocolate
installVanillaDebug - Installs the Debug build for flavor Vanilla
installVanillaDebugTest - Installs the Test build for the VanillaDebug build
installVanillaMezzanine - Installs the Mezzanine build for flavor Vanilla
installVanillaRelease - Installs the Release build for flavor Vanilla
uninstallAll - Uninstall all applications.
uninstallChocolateDebug - Uninstalls the Debug build for flavor Chocolate
uninstallChocolateDebugTest - Uninstalls the Test build for the ChocolateDebug build
uninstallChocolateMezzanine - Uninstalls the Mezzanine build for flavor Chocolate
uninstallChocolateRelease - Uninstalls the Release build for flavor Chocolate
uninstallVanillaDebug - Uninstalls the Debug build for flavor Vanilla
uninstallVanillaDebugTest - Uninstalls the Test build for the VanillaDebug build
uninstallVanillaMezzanine - Uninstalls the Mezzanine build for flavor Vanilla
uninstallVanillaRelease - Uninstalls the Release build for flavor Vanilla

2
จากนั้นเมื่อฉันต้องการสร้าง APK ของรสชาติฉันต้องใช้แอสเซมบลี XXX เย็น. ขอบคุณ.
Jose M Lechon

11
@Lechon: gradle assembleChocolateDebugจะส่งผลให้build/apk/HelloProductFlavors-chocolate-debug-unaligned.apkอยู่ในโครงการของคุณ แม้ว่าฉันจะไม่สามารถแยกแยะความเป็นไปได้ที่จะใช้ได้ผลก็ต่อเมื่อรสชาตินั้นอร่อย :-)
CommonsWare

2
@ Zainodis: คำตอบนี้มีอายุมากกว่าหนึ่งปีและเป็นไปได้ว่าพวกเขาได้เพิ่มงานที่รวบรวมประเภทการดีบักสำหรับรสชาติของผลิตภัณฑ์ทั้งหมด
CommonsWare

1
@ Zainodis: ตอนนี้ Gradle สำหรับ Android 1.0 ได้ส่งมอบให้ช้าลงแล้ว
CommonsWare

3
หากคุณมีโมดูลอย่าลืมคำนำหน้าโมดูล:<module>:assemble<FlavorName>
Torge

28

ฉันจะลดความซับซ้อนของคำตอบที่ได้รับจาก @CommonsWare เพราะการตอบคำถามฉันสับสนไปหมด

พิจารณาว่านี่คือรสชาติของผลิตภัณฑ์

  • Dev
  • Preprod
  • แยง

วิ่ง

งาน gradlew

สิ่งนี้จะแสดงรายการรสชาติของผลิตภัณฑ์ทั้งหมดพร้อมกับประเภทการสร้าง

assemble - Assembles all variants of all applications and secondary packages.
assembleAndroidTest - Assembles all the Test applications.
assembleDebug - Assembles all Debug builds.
assembleDEV - Assembles all DEV builds.
assemblePREPROD - Assembles all PREPROD builds.
assemblePROD - Assembles all PROD builds.
assembleRelease - Assembles all Release builds.

จากนี้คุณสามารถเลือกรสชาติได้อย่างง่ายดายและจะสร้างบิลด์ตามนั้น

ประกอบ gradlewPREPROD


12

หากผลิตภัณฑ์ของคุณรสชาติเป็นช็อกโกแลตคุณสามารถทำได้

./gradlew assembleChocolateRelease

หรือ

./gradlew assembleChocolateDebug

1

หากต้องการเพิ่มคำตอบข้างต้นหากคุณต้องการสร้าง Android Bundle (AAB) คุณสามารถใช้สิ่งนี้ได้

# build flavor 'flavorName' only
./gradlew bundleFlavorName
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.