当前位置:   article > 正文

Gradle build(高版本到低版本)遇到的错误总结_buildship runs with all gradle versions >=1.0. but

buildship runs with all gradle versions >=1.0. but some buildship featuresar

把跑通的项目换了一个设备运行,竟然一下出了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' }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

第二步:让应用支持多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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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

@Override   

protected void attachBaseContext(Context base) {  

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

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

但是第一步我就会报错,一直不能引入这个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'
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5

第二步三种方法都尝试了因为报错未成功,但此时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发现了两个冲突的类,把其中一个删掉就可以啦~~哇,真的如释重负

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/313147
推荐阅读
相关标签
  

闽ICP备14008679号