让Android Studio、Gradle和Android注释协同工作

让Android Studio、Gradle和Android注释协同工作,android,gradle,android-studio,android-gradle-plugin,android-annotations,Android,Gradle,Android Studio,Android Gradle Plugin,Android Annotations,既然我已经决定在androidstudio中使用Android注释,我想通过Gradle实现它。经过一些深思熟虑的研究,我发现,根据Android studio、Gradle或Android注释的版本不同,通过Gradle实现Android注释的方法有旧的和新的。我来到了这个有用的教程->,并试图实现这一点,首先,使用新的“android-L”作为类似SDK的目标 targetSDKversion“android-L”+编译SDK版本20+构建工具版本“20.0.0” 直到我试着用它 Targe

既然我已经决定在androidstudio中使用Android注释,我想通过Gradle实现它。经过一些深思熟虑的研究,我发现,根据Android studio、Gradle或Android注释的版本不同,通过Gradle实现Android注释的方法有旧的和新的。我来到了这个有用的教程->,并试图实现这一点,首先,使用新的“android-L”作为类似SDK的目标

targetSDKversion“android-L”+编译SDK版本20+构建工具版本“20.0.0”

直到我试着用它

TargetSDK版本20+编译SDK版本20+构建工具版本“20.0.0”

而且

TargetSDK版本19+编译SDK版本19+构建工具版本“19.1.0”

每次我都收到两条警告,说我的java类似乎没有被预编译。尽管它似乎预先创建了build/generated/source/apt目录。但是没有来自MainActivity->MainActivity的预处理类_

我总是收到以下警告:

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

警告:类型“[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.+'
}
Im使用以下版本:

  • Android Studio版本0.8.2
  • 渐变版本0.12.2
  • 安卓apt 1.3版
  • android annotations版本3.0.1(如build.gradle文件所示)
  • 如果这个问题有解决办法,请告诉我,因为我现在很困惑
  • 如果有更好的注释框架或使用酷注释的方法,也请告诉我
  • 如果在android项目中使用注释不再是一种常见的方式,请也告诉我
,但我更喜欢解决我的问题:)


干杯

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

我会放弃对巴特克尼的安卓注释,费很快查看了巴特克尼,发现这似乎更容易理解。但我在Android注释中找不到任何总是有用的注释,例如:@Background或类似@UiThread的注释。还有其他类似功能的实现吗?或者butterknife主要用于视图吗?@ligi实际上butterknife只提供AA功能的一小部分,但它的设置需要在build.gradle中付出同样的努力。:)@那么你的问题是什么?你不明白这些警告吗?请阅读本期。我不知道apt参数有什么问题,可能是android-apt有问题。问题是由于缺少MainActivity类,我无法构建.apk版本。此外,butterknife比AA更容易实现……这只是我的观点。因为它就像“黄油”,这根本改变不了情况。