让 Android Studio、Gradle 和 Android 注释一起工作

Posted

技术标签:

【中文标题】让 Android Studio、Gradle 和 Android 注释一起工作【英文标题】:Getting Android Studio, Gradle and Android Annotations working together 【发布时间】:2014-10-07 01:18:33 【问题描述】:

既然我决定在 android Studio 中使用 Android Annotations,我想通过 Gradle 来实现它。经过一些深思熟虑的研究,我发现通过 Gradle 实现 Android Annotations 的方法有旧有新,具体取决于 android studio、gradle 或 android annotations 的版本。我来到这个有用的教程 -> http://www.jayway.com/2014/02/21/androidannotations-setup-in-android-studio/ ,并尝试使用新的“android-L”作为目标 SDK 来实现这一点

targetSDKversion "android-L" + compileSdkVersion 20 + buildToolsVersion "20.0.0"

直到我尝试过

targetSDKversion 20 + compileSdkVersion 20 + buildToolsVersion "20.0.0"

还有

targetSDKversion 19 + compileSdkVersion 19 + buildToolsVersion "19.1.0"。

每次我收到 2 个警告,我的 java 类似乎没有被预编译。即使它似乎预先创建了 build/generated/source/apt 目录。但没有我的 MainActivity -> MainActivity_

中的预处理类

我总是收到以下警告:

注意:将日志文件解析为 D:\AndroidProjects\GradleTest\app\build\generated\source\apt\androidannotations.log 注意:使用选项初始化 AndroidAnnotations 3.0.1 >androidManifestFile=D:\AndroidProjects\GradleTest\app\build\intermediates\manifests\debug\AndroidManifest.xml, resourcePackageName=at.gradle.defuex.gradletest

警告:“[dummy1407928544078]”类型的未关闭文件;这些类型不会进行注释处理

警告:任何处理器都无法识别以下选项:'[androidManifestFile, resourcePackageName]'

我的 build.gradle 文件如下所示:

buildscript
repositories
    mavenCentral()


dependencies
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.3'
    



repositories
    mavenCentral()


apply plugin: 'com.android.application'
apply plugin: 'android-apt'

android 
    compileSdkVersion 19
    buildToolsVersion "19.1.0"

    defaultConfig 
        applicationId "at.gradle.defuex.gradletest"
        minSdkVersion 10
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    

    signingConfigs
        releaseConfig
            storeFile file("gradlekeystore.jks");
            storePassword ("*************");
            keyAlias "keyAlias";
            keyPassword "*************";
        
    


    buildTypes 
        release 
            runProguard false
            debuggable false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

            signingConfig signingConfigs.releaseConfig
        

        debug 
            debuggable true
            applicationIdSuffix ".debug"
        
    


apt 
    arguments 
        androidManifestFile variant.processResources.manifestFile
        resourcePackageName "at.gradle.defuex.gradletest"
    


dependencies 
    apt "org.androidannotations:androidannotations:3.0+"
    compile "org.androidannotations:androidannotations-api:3.0+"
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.+'

我正在使用以下版本:

Android Studio 版本 0.8.2 Gradle 版本 0.12.2 android-apt 1.3 版 android 注释版本 3.0.1(见 build.gradle 文件)
如果应该有解决这个问题的方法,请告诉我,因为我现在很困惑。 如果应该有更好的注释框架或使用很酷的注释的方法,也请告诉我。 如果它不应该再成为为 android 项目使用注释的常用方法,请也告诉我。

,但我更喜欢解决我的问题:)

干杯!

【问题讨论】:

我会放弃 AndroidAnnotations 以支持 ButterKnife 我看了看 ButterKnife,发现它似乎更容易理解。但我找不到任何注释,例如:@Background 或 @UiThread 就像在 Android 注释中一样,它们也总是很有帮助。像这样的功能还有其他实现吗?还是黄油刀主要用于视图? @ligi 实际上 ButterKnife 只提供了 AA 功能的一小部分,但它的设置需要在 build.gradle 中进行相同的工作。 :) @MadExHatter 那么你的问题是什么?你不明白警告?请阅读this 问题。我不知道apt参数有什么问题,可能是android-apt的问题。 问题是由于缺少 MainActivity_ 类,我无法构建 .apk 版本。此外,butterknife 比 AA 更容易实现……只是我的看法。因为它像“黄油”一样工作。 【参考方案1】:

尝试从项目根目录运行 gradlew clean build。 然后在设备上运行之前尝试ma​​ke项目(带有0和1的绿色箭头的按钮)。应该没问题。

【讨论】:

这根本不会改变情况。

以上是关于让 Android Studio、Gradle 和 Android 注释一起工作的主要内容,如果未能解决你的问题,请参考以下文章

Android studio更新版本后Gradle sync简直是龟速,接下来让我们快速Gradle sync

关于Android Studio更新后一直Refreshing的解决办法!

Android Studio 中build.gradle文件的详细解析

详细配置android studio中的gradle

Android studio gradle 下载很缓慢的解决方法

如何建立与 Android studio和 gradle android 库