【问题标题】:Getting Android Studio, Gradle and Android Annotations working together让 Android Studio、Gradle 和 Android 注释一起工作
【发布时间】: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 更容易实现……只是我的看法。因为它像“黄油”一样工作。

标签: android gradle android-studio android-gradle-plugin android-annotations


【解决方案1】:

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

【讨论】:

  • 这根本不会改变情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-19
  • 2014-02-01
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
相关资源
最近更新 更多