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
#
相关文章推荐
- 云巴 2016 年更新合集——SDK 篇
- 修改android源码过百度加固jdb失败
- android dump内存办法大全
- Android内存泄漏:谨慎使用getSystemService
- 一个老鸟发的公司内部整理的 Android 学习路线图 Markdown 版本
- 电商开发之商品属性分类
- android中activity管理及界面传值
- Android Studio 如何自定义导出apk文件名
- 关于导入BaiduLBS_Android.jar 出现的问题com/baidu/location/Address$1.class
- android学习——MeasureSpec介绍及使用
- android提示音
- adb server version (31) doesn’t match this client (36); killing… * daemon started successfully *
- Apk反编译步骤
- Android support-annotations ColorRes 冲突的解决办法
- 15 个 Android 通用流行框架大全
- android框架三
- 关于Fragment的一些知识点
- Android Studio突然不显示logcat日志的解决办法
- android内存泄漏---常见内存泄露的问题
- Android框架LitePal