版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36347817/article/details/88691576
今天,在完成安卓组件化框架搭建的时候,真是被ButterKnife折磨了一番,各种错误。
1.使用ButterKnife8.4.0版本,运行正常,但是在moudle中代码的R2.id.**根本找不到,看着报错,就很不爽,然后就是各种版本号试来试去。
发现一个有意思的东西:
快速生成R2.java中fields的插件:
在主工程的 build.gradle 中添加插件
apply plugin: 'me.wangyuwei.r2assistant'
buildscript {
repositories {
maven {
url 'https://dl.bintray.com/wangyuwei/maven'
}
}
dependencies {
classpath 'me.wangyuwei:r2assistant-plugin:1.0.0'
}
}
如果你想对所有的子 module 生效,执行
gradlew sweepR2
如果你只想对指定的子 module 生效,执行
gradlew sweepR2 -PmoduleName=${subModuleName}
但是这个不能解决我的问题。
因为子项目中的配置apply plugin: 'com.jakewharton.butterknife'也都添加好了,就是不行。
最后发现原来是
ButterKnife这个版本自带的bug,需要进行升级。
2.报错Execution failed for task ':app:transformClassesWithDexForDebug'.
在app的gradler配置文件中,添加 multiDexEnabled true 开启分包,然后添加
dexOptions {
javaMaxHeapSize "4g"
}
3.警告:variantOutput.getPackageApplication()
解决:
classpath 'com.android.tools.build:gradle:3.3.0’
退回
classpath 'com.android.tools.build:gradle:3.2.1’
3.
使用ButterKnife的9.0.0-rc2版本,瞬间就可以有R2.id.**就可以找到了,开心三秒,运行报错了。
问题:Program type already present: android.support.v4
说的是配置的support-v4跟butterknife中support-v4版本不一致。
项目配置的版本号是27.1.1,和butterknife所需要的版本不一致,最后降到了8.5.1,解决了问题。