Gradle build(高版本到低版本)遇到的错误总结

在将项目从高版本Gradle降级时遇到了458个错误,主要包括InnerClasses attribute警告和MultiDex错误。解决方法包括启用MultiDex,更新Android plugin Gradle版本以解决support包导入问题,尝试在AndroidManifest.xml中声明MultiDexApplication或修改自定义Application类。此外,还遇到jar包冲突问题,通过删除重复的JsonNull.class解决了冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

把跑通的项目换了一个设备运行,竟然一下出了458个error(s)…..初学者的我感觉很难受
从第一个error开始是Error:warning: Ignoring InnerClasses attribute for an anonymous inner class
去网上查了查,大佬给出了建议:
第一步:修改Gradle配置文件,启用MultiDex并包含MultiDex支持:

defaultConfig {

    multiDexEnabled true
}

dependencies { compile 'com.Android.support:multidex:1.0.1' }

第二步:让应用支持多DEX文件。在MultiDexApplication JavaDoc中提供了三种可选方法:
a、在AndroidManifest.xml的application中声明android.support.multidex.MultiDexApplication;

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.multidex.myapplication">
    <application
        ...
        android:name="android.support.multidex.MultiDexApplication">
        ...
    </application>
</manifest>

b、如果你已经有自己的Application类,让其继承MultiDexApplication;
c、如果你的Application类已经继承自其它类,你不想修改它,那么可以重写attachBaseContext()方法:

@Override   

protected void attachBaseContext(Context base) {  

    super.attachBaseContext(base); MultiDex.install(this);  

}

但是第一步我就会报错,一直不能引入这个support 包,后来发现是因为Android plugin Gradle版本低于1.1,解决办法是添加 以下依赖 multidex-instrumentation :

dependencies {
    androidTestCompile('com.android.support:multidex-instrumentation:1.0.1') {
         exclude group: 'com.android.support', module: 'multidex'
    }
}

第二步三种方法都尝试了因为报错未成功,但此时error已经减少到了1个
Error:Executionfailedfortask’:app:transformClassesWithJarMergingForDebug’.> com.android.build.api.transform.TransformException: java.util.zip.ZipException:duplicateentry:com/google/gson/JsonNull.class
出现这问题有可能是api的版本太低和缓存问题,我clean了一个工程还是这样。。
嗯,File-Settings-Apprearance&Beheavior-System Settings-Android SDK升级一下SDK的版本。并没有什么用。。。还是5个。。
然后检查了一下Module Settings里面的Version都匹配。。
最后我检查了color.xml和style.xml里的引用方法都没有错。。。想了半天。
原来是常见的jar包冲突。。可以下一个jar包冲突检测工具,我检测了没有完全重复的冲突。
可以用ctrl+N然后检测jsonnull发现了两个冲突的类,把其中一个删掉就可以啦~~哇,真的如释重负

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值