หากคุณใช้ Kotlin Gradle DSL อยู่แล้วทางเลือกอื่นสำหรับใช้วิธีนี้:
นี่คือโครงสร้างโครงการของฉัน
|-root
|----- app
|--------- libs // I choose to store the aar here
|-------------- my-libs-01.aar
|-------------- my-libs-02.jar
|--------- build.gradle.kts // app module gradle
|----- common-libs // another aar folder/directory
|----------------- common-libs-01.aar
|----------------- common-libs-02.jar
|----- build.gradle.kts // root gradle
ของฉัน app/build.gradle.kts
- ใช้วิธีการง่ายๆด้วย
fileTree
// android related config above omitted...
dependencies {
// you can do this to include everything in the both directory
// Inside ./root/common-libs & ./root/app/libs
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar"))))
implementation(fileTree(mapOf("dir" to "../common-libs", "include" to listOf("*.jar", "*.aar"))))
}
- ใช้วิธีการเดียวกันเช่นการดึงข้อมูลจากที่เก็บ maven ท้องถิ่น / ระยะไกลด้วย
flatDirs
// android related config above omitted...
repositories {
flatDir {
dirs = mutableSetOf(File("libs"), File("../common-libs")
}
}
dependencies {
implementation(group = "", name = "my-libs-01", ext = "aar")
implementation(group = "", name = "my-libs-02", ext = "jar")
implementation(group = "", name = "common-libs-01", ext = "aar")
implementation(group = "", name = "common-libs-02", ext = "jar")
}
ที่group
จำเป็นเนื่องจากจำเป็น (ไม่จำเป็น / มีค่าเริ่มต้น) ใน kotlin implementation
ดูด้านล่าง:
// Filename: ReleaseImplementationConfigurationAccessors.kt
package org.gradle.kotlin.dsl
fun DependencyHandler.`releaseImplementation`(
group: String,
name: String,
version: String? = null,
configuration: String? = null,
classifier: String? = null,
ext: String? = null,
dependencyConfiguration: Action<ExternalModuleDependency>? = null
)
คำเตือน: ความแตกต่างโดยใช้วิธี no.1 & flatDirs
no.2 ฉันยังไม่ทราบมากนักคุณอาจต้องการแก้ไข / แสดงความคิดเห็นกับคำตอบนี้
อ้างอิง:
- https://stackoverflow.com/a/56828958/3763032
- https://github.com/gradle/gradle/issues/9272