做过渠道sdk的都知道,项目引用只能使用jar包导入,而不能使用在线依赖等,使用jar包引入,会经常出现jar包冲突等问题,报错示例会有以下多种:
Multiple dex files define Landroid/support/constraint/BuildConfig;
Process 'command '...\jdk1.8.0_40\bin\java.exe'' finished with non-zero exit value 2
Process 'command 'D:\Android\android-sdk\build-tools\26.0.2\aapt.exe'' finished with non-zero exit value 1
noclassfound android.support.v4.view.NestedScrollingChild2
类似等一系列问题,解决方式都一致
0,在as Terminal 中输入 gradlew clean build --info
查看具体报错类,就是引起冲突的类
1,找到相应的类所在的jar包,copy到一个全新的目录,打开命令行,切换到相应目录,输入jar xvf xxx.jar 就是相应jar包的名字,解压,根据报错类,找到相应的类名,直接删除,然后再打开命令行,输入 jar cvfM xxx.jar aaa 其中 xxx.jar 为新生产jar包名字 aaa 为需要打包成jar包的文件夹名,就是你开始解压后的文件夹名。现在你就得到了一个已经删除了冲突类的全新jar包。
2,把全新的jar导入到项目中,重新addaslib, 执行 gradlew clean build 如果还有其他冲突,照样解决就行。解决完后就可以成功编译。