马上要开始一个新项目,项目时间比较紧迫,所以想要加快开发速度,第一个想到的就是注解的开发方式。一查找果然Android上也有一些注解,衡量了一下决定使用androidannotations框架。
第一件事就是在自己电脑上搭建一个demo,用来测试可行性,结果真是命途多舛,用了一周的时间才整明白他是怎么回事。
在Android studio和eclipse上的搭建方式略有不同,在官方网站上有说明。
Eclipse配置网址:https://github.com/excilys/androidannotations/wiki/Eclipse-Project-Configuration
在这里就不细说,毕竟android官方都已经放弃Eclipse平台了,如果不是出于历史原因和惰性,那必然要选择android studio作为Android的主要IDE了。
由于在最初的时候使用android studio配置失败了。所以中间尝试使用eclipse进行配置,毕竟对eclipse更加熟悉。
在使用eclipse配置的时候,出现了一个问题。在说明中需要配置annotation processing,但是如果使用的是从android官网下载版本,是没有这个选项的。所以需要自行安装相关插件。
这里给出一个解决方案http://blog.csdn.net/lpforever/article/details/40779341
不过这个方案并没有经过我的证实。
配置一个小小的库都如此头疼,在放了两天之后还是决定攻克它。
重新阅读官方网站,无意中打开一个页面,提到了与eclipse类似的配置方法,也是需要annotation processing,
遗憾的是Android studio也没有这个东西。所以这条路也走不通了。
最后找到了这个网址:http://www.07net01.com/2015/07/878301.html
里面的问题一正是我遇到的问题之一,
Error:(2, 0) Plugin with id 'android-apt' not found.
解决方法:
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4
} 在project的build.gradle添加classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4',我在最初的版本中使用的是1.3,而在官网查看应该已经出到1.7了。由于在最开始是,即使添加了这段话依然会爆这个错误,所以怀疑是否与版本有关。
这里还涉及到studio的一个事情,配置了插件studio会自动下载。
这一步完成之后就一切顺利起来了,根据http://www.2cto.com/kf/201507/417313.html网址的配置方式进行配置。
由于最初配置时,没有看到配置后完整的build.gradle,所以误以为
apt { arguments { androidManifestFile variant.outputs[0].processResources.manifestFile resourcePackageName "com.fc.mytestlib" } }这段代码是写在android{}这个里面的。
事实证明,网上的配置方式是可行的,但是在一些细节上并没有说清楚。比方说至今也不清楚这个apt插件到底是干什么的。
如果配置正确就可以开始使用annotations了。
这里贴出一个我配置成功后的module的build.gradle文件。
apply plugin: 'com.android.application' apply plugin: 'android-apt' def AAVersion='3.3.2' android { compileSdkVersion 21 buildToolsVersion "22.0.1" defaultConfig { applicationId "com.fc.mytestlib" minSdkVersion 14 targetSdkVersion 22 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:22.2.0' apt "org.androidannotations:androidannotations:$AAVersion" } apt { arguments { androidManifestFile variant.outputs[0].processResources.manifestFile resourcePackageName "com.fc.mytestlib" } }
配置成功之后就是开始编程了。
需要注意的是:使用annotations的Activity在清单文件中是需要加一个下划线作为名称的,这个文件实际上是编译后生成的,所以在修改了名称之后是一定要先编译再运行的,否做会报错。
基于同样的原因,在使用这个activity的时候也是需要加下划线的,否则会报错。
例如:
android:name=".activity.AnnotationTestActivity_" >
intent = new Intent(mContext, AnnotationTestActivity_.class); mContext.startActivity(intent);如果某些Activity不打算使用annotations,那么直接正常使用就可以了。