ปลั๊กอิน Gradle ของ Google ที่แนะนำสำหรับการกำหนดค่าไฟล์ gradle ของคุณเพื่อสร้างหลายโครงการมีข้อบกพร่องบางอย่างหากคุณมีหลายโครงการขึ้นอยู่กับโครงการห้องสมุดหนึ่งโพสต์นี้จะอธิบายสั้น ๆ เกี่ยวกับการกำหนดค่าที่แนะนำของ Google ข้อบกพร่องของมัน รองรับการตั้งค่าหลายโครงการใน Android Studio:
การตั้งค่าทางเลือกแบบหลายทางเลือกสำหรับ android studio
วิธีที่แตกต่าง:
ปรากฎว่ามีวิธีที่ดีกว่าในการจัดการหลายโครงการใน Android Studio เคล็ดลับคือการสร้างโครงการ Android Studio แยกสำหรับห้องสมุดของคุณและบอก gradle ว่าโมดูลสำหรับห้องสมุดที่แอพของคุณขึ้นอยู่นั้นอยู่ในไดเรกทอรีโครงการของห้องสมุด หากคุณต้องการใช้วิธีนี้กับโครงสร้างโครงการที่ฉันอธิบายไว้ข้างต้นคุณจะทำสิ่งต่อไปนี้:
- สร้างโครงการ Android Studio สำหรับไลบรารี StickyListHeaders
- สร้างโครงการ Android Studio สำหรับ App2
- สร้างโครงการ Android Studio สำหรับ App1
- กำหนดค่า App1 และ App2 เพื่อสร้างโมดูลในโครงการ StickyListHeaders
ขั้นตอนที่ 4 เป็นส่วนที่ยากดังนั้นนั่นเป็นขั้นตอนเดียวที่ฉันจะอธิบายโดยละเอียด คุณสามารถอ้างอิงโมดูลที่อยู่ภายนอกไดเรกทอรีของโครงการโดยเพิ่มคำสั่งโครงการในไฟล์ settings.gradle ของคุณและโดยการตั้งค่าคุณสมบัติ projectDir บนวัตถุ ProjectDescriptor ที่ส่งคืนโดยคำสั่งโครงการนั้น:
รหัสหนึ่งจะต้องใส่ในsettings.gradle
:
include ':library1'
project(':library1').projectDir = new File('../StickyListHeader/library1')
หากคุณทำสิ่งนี้ถูกต้องคุณจะสังเกตเห็นว่าโมดูลที่อ้างอิงโดยโครงการของคุณจะปรากฏในตัวนำทางโครงการแม้ว่าโมดูลเหล่านั้นจะอยู่ภายนอกไดเรกทอรีโครงการ:
สิ่งนี้ช่วยให้คุณทำงานกับรหัสห้องสมุดและรหัสแอพพร้อมกัน การรวมการควบคุมเวอร์ชันยังทำงานได้ดีเมื่อคุณอ้างอิงโมดูลภายนอกด้วยวิธีนี้ คุณสามารถคอมมิทและพุชการแก้ไขของคุณไปยังไลบรารี่ได้เหมือนกับที่คุณคอมมิทและพุชการดัดแปลงไปยังโค้ดแอปของคุณ
วิธีการตั้งค่าหลายโครงการนี้ช่วยหลีกเลี่ยงปัญหาที่ทำให้เกิดการกำหนดค่าที่ Google แนะนำ เนื่องจากเราอ้างถึงโมดูลที่อยู่นอกไดเรกทอรีโครงการเราจึงไม่จำเป็นต้องทำสำเนาโมดูลห้องสมุดเพิ่มเติมสำหรับทุกแอพที่ขึ้นอยู่กับมันและเราสามารถสร้างไลบรารี่ของเราได้โดยไม่ต้องใช้ git submodule ไร้สาระ
น่าเสียดายที่วิธีการอื่นในการตั้งค่าหลายโครงการนั้นหายากมาก เห็นได้ชัดว่าไม่ใช่สิ่งที่คุณจะเข้าใจได้จากการดูคำแนะนำของ Google และ ณ จุดนี้ไม่มีวิธีกำหนดค่าโครงการของคุณด้วยวิธีนี้โดยใช้ UI ของ Android Studio