Android studio中配置androidannotations框架

马上要开始一个新项目,项目时间比较紧迫,所以想要加快开发速度,第一个想到的就是注解的开发方式。一查找果然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,那么直接正常使用就可以了。








你可能感兴趣的:(android)