博主开发小白一个,第一次自己写博客,将最近做的项目遇到的问题总结一下,有遇到相同bug的可以参考参考。
今天老板要将之前写的一个商场APP嵌入到现在的项目中,好吧,老板最大,没办法,也只能开搞了..... 当开始做的时候,想的就是将项目转为library再导入当前的项目中,想到就做,马上就开搞,首先将build.gradle中改成 Sync Now,然后你会发现报错了,为什么呢 ,原来库文件不能有,把这行删掉 再Sync Now就好了。这样就可以了吗?只能说你太天真了,这只是把项目转为library的第一步,接下来还需要将library文件导入到当前项目中。那么怎么导入呢 ,别急,听博主慢慢道来.首先选择new-> Import Module,选择我们之前准备好的library,将library导入进来,导入进来后,发现没什么问题,然后你在主项目设置了点击跳转到library中写好的一个activity中,运行后,你会发现一片飘红,报错需要常量表达式.....what,这是什么情况,原来library中switch case分支后面跟着的必须是常量,换句话说出现这个问题的原因是Android library中生成的R.java中的资源ID不是常数,,解决办法网上也很多,也就不说为什么会这样了(其实我也不太明白),只要把switch case改成if else 就行了,OK,这个bug解决,离成功又近了一步。想想还有点小激动\(^o^)/~。
如果绑定控件id用的是findviewbyid就不会报错,如果是用的Butterknife,那么恭喜你,也一样会报错需要常量表达式,那么这个问题该怎么解决呢,其实这个是Butterknife的一个bug,在8.4.0版本已经解决了,当然,博主现在使用的版本已经是最新版的8.6.0了。那么我们先按Butterknife官网给的解决方案试一下。
Library projects
To use Butter Knife in a library, add the plugin to your buildscript
:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.jakewharton:butterknife-gradle-plugin:8.6.0'
}
}
and then apply it in your module:
apply plugin: 'com.android.library