Android应用程序常见编译问题解决

       主应用程序中引用了外部的Module模块,出现了如下错误,不保证如下解决方法通用所有问题:

1: Error:(2) Error retrieving parent for item: No resource found that matches the given name ‘android:TextAppearance.Material.Widget.Button.Inverse’.

       项目中引用了一个Module,Module中置顶的compileSdkVersion与主版本不一致,导致匹配失败

2:Module中与主版本都定义了同名attr,完整问题分析

       如果出现了同名的attr,会提示错误Attribute “xxx” has already been defined,表示相同的属性被重复定义,全部搜索查找同名attr,之后将同名attr改成不一样的名字

3: armeabi 与 armabi-7 都放置了so

系统加载的时候会默认先找-7对应包里的so

4: Module中与主版本都引用了appcompat

       Module中与主版本必须要引用相同版本的appcompat,否则会Error:(2) Attribute “textAllCaps” has already been defined

5: 主版本与Module同名资源

       主版本与Module中均定义了同名资源,比如同名drawable,string,编译打包后主版本默认覆盖Module中的值。因此Module中同名文件加前缀。

6: 主板本与Module引用相同的jar

可以采用只保留一份或者Module中dependencies对引用jar采用provided方式编译

7: universal-image-loader-1.9.1升级到universal-image-loader-1.9.3

ImageLoaderConfiguration.Builder 初始化很多方法已经废弃掉,建议采用如下官方写法:查看链接
ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(context);
config.threadPriority(Thread.NORM_PRIORITY - 2);
config.denyCacheImageMultipleSizesInMemory();
config.diskCacheFileNameGenerator(new Md5FileNameGenerator());
config.diskCacheSize(50 * 1024 * 1024); // 50 MiB
config.tasksProcessingOrder(QueueProcessingType.LIFO);
config.writeDebugLogs(); // Remove for release app

// Initialize ImageLoader with configuration.
ImageLoader.getInstance().init(config.build());

8: Module中含有资源

       Module中的gradle脚本中一定要添加如下,否则编译后,所有资源合并到主版本,R路径报名变为主版本报名,导致classNotFround
main {
manifest.srcFile ‘AndroidManifest.xml’
java.srcDirs = [‘src’]
resources.srcDirs = [‘src’]
aidl.srcDirs = [‘src’]
renderscript.srcDirs = [‘src’]
res.srcDirs = [‘res’]
assets.srcDirs = [‘assets’]
jniLibs.srcDirs = [‘libs’]
}

9:将Module打包成aar

       主版本中引用aar,同名资源会提示重复定义,这个与直接引用Module方式不一样。直接引用同名资源会覆盖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值