配置版本及链接
Android Studio版本2.2.3: http://www.android-studio.org/
Android annotation官网:https://github.com/excilys/androidannotations
Android annotation官网中有提到在Gradle中要怎么配置:
https://github.com/excilys/androidannotations/wiki/Building-Project-Gradle
这里简单记录Android annotation配置过程,分享下配置过程中遇到问题及解决方法。
- 在Android Studio中新建普通工程(这里命名AnnotationDemo)
- 主要修改如下2个build.gradle文件:
project的 build.gradle :
添加代码内容: classpath ‘com.neenbedankt.gradle.plugins:android-apt:1.8+’
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
//配置Android annotations
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8+'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Module的 build.gradle (本dem中Module是app):
该模块修改处,三处配置之外,还有一处对testCompile的注释。
apply plugin: 'com.android.application'
//配置【1】Android annotations
apply plugin: 'android-apt'
def AAVersion = '4.0+'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.annotationdemo"
minSdkVersion 19
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.0.0'
//被注解
//testCompile 'junit:junit:4.12'
//配置【2】Android annotations
apt "org.androidannotations:androidannotations:$AAVersion"
compile "org.androidannotations:androidannotations-api:$AAVersion"
}
//配置【3】Android annotations
apt {
arguments {
androidManifestFile variant.outputs[0].processResources.manifestFile
resourcePackageName 'com.annotationdemo'
}
}
- 修改AndroidManifest.xml文件。将
<activity android:name=".MainActivity">修改为<activity android:name=".MainActivity_">
此时配置完成,编译工程,会出现如下错误。
Information:Gradle tasks [:app:generateDebugSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies, :app:generateDebugAndroidTestSources, :app:compileDebugSources, :app:compileDebugUnitTestSources, :app:compileDebugAndroidTestSources]
C:\Users\Desktop\test\AnnotationDemo\app\src\test\java\com\annotationdemo\ExampleUnitTest.java
Error:(3, 17) 错误: 程序包org.junit不存在
Error:(4, 24) 错误: 程序包org.junit不存在
Error:(12, 6) 错误: 找不到符号
符号: 类 Test
位置: 类 ExampleUnitTest
Error:(14, 9) 错误: 找不到符号
符号: 方法 assertEquals(int,int)
位置: 类 ExampleUnitTest
Error:Execution failed for task ':app:compileDebugUnitTestJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
Information:BUILD FAILED
Information:Total time: 2.725 secs
Information:5 errors
Information:0 warnings
Information:See complete output in console
这是因为注释了testCompile引起的,解决办法,将测试类中相关代码注释。路径为/app/src/test/java/【包名】/ExampleUnitTest.java。修改如下:
package com.annotationdemo;
//import org.junit.Test;
//import static org.junit.Assert.*;
/**
1. Example local unit test, which will execute on the development machine (host).
2. * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
/* @Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
}*/
}
解决上面问题,程序可以正常编译了。但是还是不能正常运行,修改MainActivity文件。因为使用androidannotation框架,需要对使用的Activity进行标注,使用@EActivity。MainActivity修改如下:
package com.annotationdemo;
import android.support.v7.app.AppCompatActivity;
import org.androidannotations.annotations.EActivity;
@EActivity(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {
/*
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}*/
}
完成之后编译即可运行。
~遇到问题及解决
=====
A problem occurred configuring project ':app'.
Cannot get property 'processResources' on null object
可能有2个原因:
—Module中build.gradle的apt配置不正确。
按上文介绍的配置即可。
—未注释testCompile ‘junit:junit:4.12’
特别是第二条,很难查到。- unResolved “MainActivity_”, 讲的是无法解析这个Activity。
原因在于没有是有@EActivity对Activity标记。
END
#