Android Studio 3.1.1下build.gradle中api依赖配置技术问询
Android Studio 3.1.1中api与implementation的配置方案(针对module-core库复用依赖场景)
嘿,我来帮你把这个配置的事儿捋明白!你已经把module-core里的compile换成api了,这路子完全对——毕竟api就是用来让依赖你的主项目能复用这些库依赖的,接下来咱们把细节补全,确保一切顺畅。
先搞懂api和implementation的核心区别
api:相当于旧版的compile,当你在库项目里用api声明依赖时,这个依赖会完整传递给所有依赖该库的上层项目(也就是你的主项目),这正是你想要的效果——主项目不用重复写依赖,直接就能用module-core里的support库。implementation:这个是库内部私有的依赖,上层项目看不到也用不了,适合那些库自己用、不需要暴露给主项目的工具类或底层库。
module-core的完整build.gradle配置示例
把你的依赖配置补全并优化,确保传递性生效:
apply plugin: 'com.android.library' android { compileSdkVersion rootConfiguration.compileSdkVersion defaultConfig { minSdkVersion rootConfiguration.minSdkVersion targetSdkVersion rootConfiguration.targetSdkVersion versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { // 用api声明需要传递给主项目的公共依赖 api("com.android.support:appcompat-v7:$rootConfiguration.supportLibraryVersion") { force = true } api("com.android.support:design:$rootConfiguration.supportLibraryVersion") { force = true } api("com.android.support:support-v13:$rootConfiguration.supportLibraryVersion") { force = true } // 如果有库内部自用、不需要主项目访问的依赖,用implementation implementation("org.greenrobot:eventbus:3.1.1") }
主项目的依赖配置
主项目只需要依赖module-core即可,不需要重复声明那些support库——api已经把依赖传递过来了:
apply plugin: 'com.android.application' android { compileSdkVersion rootConfiguration.compileSdkVersion defaultConfig { applicationId "com.your.app.package" minSdkVersion rootConfiguration.minSdkVersion targetSdkVersion rootConfiguration.targetSdkVersion versionCode 1 versionName "1.0" } } dependencies { // 只需要依赖你的module-core库 implementation project(':module-core') // 这里不需要再声明appcompat-v7、design等依赖,已经从module-core传递过来了 }
Android Studio 3.1.1的注意事项
- 确保根项目build.gradle的gradle插件版本对应3.1.1:
buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.1.1' } }
- 你用的
force = true是个好办法,可以强制统一support库版本,避免依赖冲突,但要保证rootConfiguration里的版本号在主项目和库项目中是一致的。 - 如果同步时出现依赖冲突,可以执行
./gradlew dependencies命令查看依赖树,找出冲突的依赖后,通过exclude或者调整force规则解决。
内容的提问来源于stack exchange,提问作者Harsh
相关产品推荐
相关产品推荐

