我的Android应用程序中有2个模块。核心模块和一个功能模块。目前,我对这2个模块共有3个依赖关系,并将其添加到两个模块gradle文件中(这会导致更大的应用程序大小和冗余)。如何与android中的多个模块共享这些依赖项。
核心模块依赖性
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
api 'com.github.bumptech.glide:glide:4.9.0'
}
功能模块依赖项
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
//implementation project(':testmodule')
api project(path:':coreModule',configuration: 'default')
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
}
已在核心模块中使用api
,并在api project(path:':coreModule',configuration: 'default')
中用于功能模块
答案 0 :(得分:1)
如果您正在写作
implementation 'com.xxx.android.x:1.2342'
表示当前模块需要此依赖项才能工作。在那里,您需要在两个模块中明确声明它
一个核心
另一个模块中的一个
您可以使用删除这些冗余的重复依赖项
api
以外的implementation
因为api
用于在一个模块中与其他模块共享依赖项。
因此,对于重复的依赖项,将impementation
替换为api
。
例如:图书馆使用androidx.core:core-ktx:1.0.2
然后在库build.gradle
中添加
api 'androidx.core:core-ktx:1.0.2'
在这里,您无需在应用模块中再次定义它。
答案 1 :(得分:0)
Android Studio总是警告有关重复的依赖项,这些重复的依赖项在构建release-apk文件时会花费大量时间。
您可以首先使用以下命令来识别重复的依赖项:
gradle -q dependencies yourProject:dependencies --configuration compile
命令结果将显示人类可读的所有依赖关系的树层次结构,如下所述。
compile - Classpath for compiling the main sources.
...
+--- project :yourProject
| +--- com.loopj.android:android-async-http:1.4.6
| +--- org.apache.httpcomponents:httpmime:4.2.5
| | \--- org.apache.httpcomponents:httpcore:4.2.4
| \--- com.google.code.gson:gson:2.3.1
...
一旦确定了重复的依赖项,就可以使用build.gradle
文件中的以下语法将它们从指定的库中排除。
//OneSignal
api ('com.onesignal:OneSignal:[3.6.2, 3.99.99]') {
exclude group: 'android.arch.lifecycle', module: 'extensions'
exclude group: 'com.android.support', module: 'design'
}
我希望这会有所帮助。