使用AndroidAnnotations(以下简称AA)已经有一段时间了,挺好用的,基本上完全可以满足Android开发需要,可以简化代码,所以现在在岗编写的所有的项目都是基于AA实现的。
AA现在最新版本为3.2
官方地址:http://androidannotations.org/
github地址:https://github.com/excilys/androidannotations
需要的可以去下载,官方的wiki写的也很全面,完全可以当教科书来看,不用找其他的资料了。
因为项目需要,需要将项目拆分成多个library项目,最终组合成为成品,所以刚开始的时候,我将项目进行了模块划分,并且创建了相对应的Library项目。
在测试模块的过程中,写入了部分代码,代码没有报任何的异常。
但是当Library项目,设置勾选is Library属性时,项目代码开始报错
除了@EActivity注解报错之外,@ViewById等标签均有这样的错误提示。
错误提示大概是讲EActivity注解中的Value值必须是一个常量。
之前单独项目都正常,为什么勾选了is Library 项目变成Library项目 AA 就报这样的错误呢?带着疑惑,我查看了项目生成的R文件
这是library项目下生成的R文件
这是去掉is Library后生成的R文件
一眼就看出区别,同样的资源,在is Library勾选之后,将原来的final 属性去掉了。
所以AA在编译过程中发现资源不是常量,所以报错。
那怎么处理呢?
查阅了AA 的Github上的Wiki内容 发现有这样一个说明
地址:https://github.com/excilys/androidannotations/wiki/Cookbook
点击进入之后文章的开头就已经写的很清楚了,所以我们照着这个文档中的说明来操作
只是需要将原来的 R.资源.资源名的方式 换成使用resName的方式即可
这样就在library 项目中使用AA 了