中易网

如何解决android studio多个library库含有相同引用

答案:3  悬赏:60  
解决时间 2021-01-19 13:23
如何解决android studio多个library库含有相同引用
最佳答案
在使用Android Studio开发的时候,如遇到多个项目引用同一个library(源码)的情况时,会遇到在每个项目中都要有一套library的代码的情况,对于还在开发和维护中的Library需要频繁的修改,这对同步就很麻烦,为了解决这个问题,出现了下面的解决方案。
首先:新建一个类库工程,工程名为AppLibs.Dev。

在该类库中包含一个公共的类库appLibs的Module,Module下面的build.gradle配置如下:
 apply plugin: 'com.android.library' android {  useLibrary 'org.apache.http.legacy'  compileSdkVersion 25  buildToolsVersion "25.0.2" defaultConfig { minSdkVersion 9 targetSdkVersion 25 versionCode 100 versionName "1.0.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { debug { // debug模式 } release { // 是否进行混淆 minifyEnabled false // 混淆文件的位置 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }  lintOptions { abortOnError false } } dependencies {  // compile fileTree(include: ['*.jar'], dir: 'libs')  compile files('libs/jsch-0.1.53.jar') compile files('libs/commons-net-3.3.jar') compile files('libs/okhttp-3.2.0.jar') compile files('libs/okio-1.6.0.jar')  androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' })  compile 'com.android.support:appcompat-v7:25.2.0' compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'  testCompile 'junit:junit:4.12' }

这样一个类库工程就建好了,接下来就是引用包含该类库的工程。
其次:引用该类库工程。通过Android Studio新建一个TestProject的工程,如下图。

在该工程中需要做以下三件事:
1、在project的settings.gradle里面增加红框圈住部分的代码。
2、在module的build.gradle文件中增加红框圈住部分的代码:

如果该类库工程中包含多个module,那么在settings.gradle文件中原有代码后面增加下面的代码即可:
include ':AppLibs.Dev:moduleName'
同时在APP module中build.gradle增加相应的模块代码即可:
compile project(':AppLibs.Dev:moduleName')
3、点击Android Studio的菜单中的Build->Clean Project,完成Clean以后就看到如下图。

完成如上图所示以后,表示类库工程已经被APP工程引用进去了,这样以后再修改类库工程中的源码,其他引用该类库的工程中源码也就同步修改了。
全部回答
如果可以的话,建议使用dependencies { compile 'com.google.code.gson:gson:2.2.4' compile 'com.braintreepayments.api:braintree:1.+' compile 'com.umeng.analytics:analytics:latest.integration' }这种引用方式
千锋扣丁学堂Android开发为您解答:
假设项目引用了类库 A 和类库 B ,同时,这两个类库都依赖包 C 。
1. 如果 A 、B 、C 均为 Maven 依赖,可以直接使用,不会存在冲突问题。
如果还是有问题,则在主项目可以去除 A 、B 中的 C 。
主项目:
compile 'a.group:a.artifactId:a.version' {
excludegroup: 'c.groupId', module: 'c.artifactId'
}
compile 'b.group:b.artifactId:b.version' {
exclude group: 'c.groupId', module: 'c.artifactId'
}
compile 'c.groupId:c.artifactId:c.version'
2. 如果 A 、B 均为 Maven 依赖,C 为 jar 依赖。则将 C 复制到主项目、A 、B 中,主项目 compile C ,A 、B provided C 。
主项目:compile files('libs/C.jar')
A 、B 项目:provided files('libs/xx.jar')
3. 如果 A 、B 均为 Library Project 依赖,C 为 jar 依赖。同 2 。
4. 如果 A 、B 均为 Library Project 依赖,C 为 Maven 依赖。同 2 或者 1(Maven 依赖也可以进行 provided 处理)。
5. 如果 A 为 Maven 依赖或者 Library Project 依赖,B 为 jar 依赖,C 为 jar 依赖。
A 项目:provided files('libs/xx.jar')
B 项目和主项目,不做其他任何处理。
6. 如果 A 、B 、C 均为 jar 依赖,尝试重新将 A 、B 打包,将 C 剥离出来。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
TS16949目标是什么?
各位小仙女有这个头像吗
日本JISC品牌全自动荷重试验MAX-1KN-S精度是
高压泵的种类有哪些区别
流星花园第七集衫菜被打时候啊寺来救她背景音
上有三十三天,下有十八层地狱是什么意思啊
请教办公软件高手,PPT幻灯片母版中的编辑好
求救!ABB变频器ACS800,已经运行,有频率设
中英极限挑战攀爬极限运动那节目叫啥名字
同步养生堂地址在哪,我要去那里办事
感觉老板不满意自已了,要不要去问清楚,还是
联想flex3折叠后触摸屏的键盘不能用是怎么回
精华到底要不要用
怎么回答这个问题
新买的一袋大米,让老鼠给嗑了,还被老鼠弄走
推荐资讯
人生问题。
君艺发型专业设计地址在什么地方,我要处理点
尼康afs70-300和af70-300的区别
朋友中考考的不好,该怎么安慰
电煮锅坏了,用一段时间就导致跳闸,到底是出
FRPP管和PPH管有哪些区别
求问一本青春小说,大概2007年左右
I can speaak english怎么翻译
龙景源宾馆地址在什么地方,想过去办事
任志秋京剧四郎探母萧太后,速求这段视频,或
眼部轻伤鉴定在伤后什么时间鉴定才合理?
素梅宾馆在什么地方啊,我要过去处理事情
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?