Android组件化aar躺坑记:ButterKnife 报 元素值必须为常量表达式错误

背景:

项目有需求,将自己写的模块作为一个module给到大项目使用,所以准备把自己的项目打包成aar包。

一、如何将独立项目打包成aar:

1、修改module下的application 为library:

 ——>

2、修改Manifest.xml文件如下:

 删掉下面这些以及apk入口:

Android组件化aar躺坑记:ButterKnife 报 元素值必须为常量表达式错误_第1张图片

3、修改代码中的switch语句if语句

4、如果代码有配混淆的话,参考下面注释掉该属性。

Android组件化aar躺坑记:ButterKnife 报 元素值必须为常量表达式错误_第2张图片

5、双击下面截图中的assembleDebug即可执行打包过程。(如果项目里有集成ButterKnife的话,理论上讲会报错,解决可以参考该博客第二部分。)

Android组件化aar躺坑记:ButterKnife 报 元素值必须为常量表达式错误_第3张图片

 

 
 

但是,坑爹的是,由于使用了ButterKnife(版本:8.8.1)插件,导致构建的时候一直报如下错误(截图来自网络,自己报错的截图忘记截了。)

然后各种百度,但是找到的都是17年的比较老的,没法使用,故写下自己躺坑的过程。

 

二、Buttknife报错处理:

1、在项目gradle文件里加入如下:(版本号8.4.0、8.5.0、8.5.1都可以)

classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'

Android组件化aar躺坑记:ButterKnife 报 元素值必须为常量表达式错误_第4张图片

 

 2、在module里gradle里添加如下即可:

apply plugin: 'com.jakewharton.butterknife'

 

3、将应用的BindView这里的 R 都换成 R2,只在注解这里这样换,其他地方不要换:

4、先Sync一下项目,然后rebuild 多次。

重点(亲测有效):记得rebuild一两次之后找到报错的类,点进去,随便找个报错的行,然后手动删除R2,再输一次R2,然后发现这个类不报错了。(无意中发现的。)

 

你可能感兴趣的:(Android组件化aar躺坑记:ButterKnife 报 元素值必须为常量表达式错误)