Android Studio2.2.3配置androidannotation框架

来源:互联网 发布:淘宝天猫怎么抢红包 编辑:程序博客网 时间:2024/06/16 01:20

配置版本及链接

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配置过程,分享下配置过程中遇到问题及解决方法。

  1. 在Android Studio中新建普通工程(这里命名AnnotationDemo)
  2. 主要修改如下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 annotationsapply 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 annotationsapt {    arguments {        androidManifestFile variant.outputs[0].processResources.manifestFile        resourcePackageName 'com.annotationdemo'    }}
  1. 修改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.javaError:(3, 17) 错误: 程序包org.junit不存在Error:(4, 24) 错误: 程序包org.junit不存在Error:(12, 6) 错误: 找不到符号符号:Test位置:ExampleUnitTestError:(14, 9) 错误: 找不到符号符号:   方法 assertEquals(int,int)位置:ExampleUnitTestError:Execution failed for task ':app:compileDebugUnitTestJavaWithJavac'.> Compilation failed; see the compiler error output for details.Information:BUILD FAILEDInformation:Total time: 2.725 secsInformation:5 errorsInformation:0 warningsInformation: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);    }*/}

完成之后编译即可运行。

~遇到问题及解决

=====

  1. A problem occurred configuring project ':app'.
    Cannot get property 'processResources' on null object

    可能有2个原因:
    Module中build.gradle的apt配置不正确。
    按上文介绍的配置即可。
    未注释testCompile ‘junit:junit:4.12’
    特别是第二条,很难查到。
  2. unResolved “MainActivity_”, 讲的是无法解析这个Activity。
    原因在于没有是有@EActivity对Activity标记。

END

#

0 0
原创粉丝点击