您的位置:首页 > 移动开发 > Android开发

Android Studio2.2.3配置androidannotation框架

2017-01-03 12:36 423 查看

配置版本及链接

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

#
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: