Android 注释和新的 Android 数据绑定(bind)

标签 android android-annotations android-databinding

当我在我的 gradle 构建文件中激活 androidannotations apt 行时,数据绑定(bind)类不再被识别。 当我只是注释掉“apt ..”行时,所有内容都会再次编译。

会不会是 android-annotations 以某种方式阻止了数据绑定(bind) apt 的执行?还是执行顺序有误?

问候, 托马斯

gradle 构建错误: $ gradle 干净构建

:app:clean
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareComAndroidDatabindingLibrary10Rc1Library
:app:prepareComAndroidSupportAppcompatV72300Library
:app:prepareComAndroidSupportCardviewV72300Library
:app:prepareComAndroidSupportDesign2300Library
:app:prepareComAndroidSupportMultidex101Library
:app:prepareComAndroidSupportRecyclerviewV72300Library
:app:prepareComAndroidSupportSupportV42300Library
:app:prepareComJourneyappsZxingAndroidEmbedded302Library
:app:prepareDebugDependencies
:app:compileDebugAidl
:app:compileDebugRenderscript
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources
:app:mergeDebugResources
AAPT: /opt/projects/erp/android/inventory-app/app/src/main/res/drawable-mdpi/ic_drawer.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
AAPT: /opt/projects/erp/android/inventory-app/app/src/main/res/drawable-xhdpi/ic_drawer.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
AAPT: /opt/projects/erp/android/inventory-app/app/src/main/res/drawable-hdpi/ic_drawer.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
:app:processDebugManifest
:app:dataBindingLayoutsProcessDebugResources
:app:processDebugResources
:app:dataBindingInfoClassProcessDebugResources
:app:generateDebugBuildConfig
:app:generateDebugSources
:app:processDebugJavaRes UP-TO-DATE
:app:compileDebugJavaWithJavac
/opt/projects/erp/android/inventory-app/app/src/main/java/org/moserp/MainActivity.java:37: error: package org.moserp.inventory.databinding does not exist
import org.moserp.inventory.databinding.IncludeFacilityViewBinding;
                                    ^
/opt/projects/erp/android/inventory-app/app/src/main/java/org/moserp/MainActivity.java:48: error: cannot find symbol
    private IncludeFacilityViewBinding includeFacilityViewBinding;

...

Note: Resolve log file to /opt/projects/erp/android/inventory-app/app/build/generated/source/apt/androidannotations.log
Note: Initialize AndroidAnnotations 3.3.2 with options {androidManifestFile=/opt/projects/erp/android/inventory-app/app/build/intermediates/manifests/full/debug/AndroidManifest.xml, logLevel=TRACE}
Note: Start processing for 1 annotations [org.androidannotations.annotations.EActivity] on 64 elements ...
Note: AndroidManifest.xml file found with specified path: /opt/projects/erp/android/inventory-app/app/build/intermediates/manifests/full/debug/AndroidManifest.xml
Note: AndroidManifest.xml found: AndroidManifest [applicationPackage=de.moserp.inventory, componentQualifiedNames=[org.moserp.MainActivity_, ...], applicationClassName=android.support.multidex.MultiDexApplication, libraryProject=false, debugabble=false, minSdkVersion=17, maxSdkVersion=-1, targetSdkVersion=23]
error: The generated de.moserp.inventory.R class cannot be found
Note: Found Android class: android.R

构建.gradle

import com.android.build.gradle.tasks.Dex

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

def AAVersion = '3.3.2'

android {
    compileSdkVersion 23
    buildToolsVersion "23"

    defaultConfig {
        applicationId "de.moserp.inventory"
        minSdkVersion 17
        targetSdkVersion 23
        versionName "1.0"
        versionCode 1
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    dexOptions {
        preDexLibraries = false
    }
    project.tasks.withType(Dex) {
        additionalParameters=['--core-library']
    }
    packagingOptions {
        exclude 'META-INF/ASL2.0'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/notice.txt'
    }
    lintOptions {
        abortOnError false
    }
}

apt {
    arguments {
        androidManifestFile variant.outputs[0]?.processResources?.manifestFile
    }
}

dependencies {
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:appcompat-v7:23.0.0'
    // UI libraries
    compile 'com.android.support:recyclerview-v7:23.0.0'
    compile 'com.android.support:cardview-v7:23.0.0'
    compile 'com.android.support:design:23.0.0'
    //compile 'com.android.support:palette-v7:23.0.0'
    //compile 'com.android.support:gridlayout-v7:23.0.0'

    // Spring and Rest
    compile('org.springframework.hateoas:spring-hateoas:0.17.0.RELEASE') {
        exclude group: '*'
    }
    compile 'org.springframework.android:spring-android-rest-template:1.0.1.RELEASE'
    compile 'com.fasterxml.jackson.core:jackson-databind:2.3.2'

    // ZXing Scanner Lib
    compile 'com.journeyapps:zxing-android-embedded:3.0.2@aar'
    compile 'com.google.zxing:core:3.2.0'

    // Frameworks - general
    apt 'com.android.databinding:compiler:1.0-rc1'
    apt "org.androidannotations:androidannotations:$AAVersion"
    compile "org.androidannotations:androidannotations-api:$AAVersion"
}

repositories {
    maven {
        url 'http://repo.spring.io/milestone'
    }

}

最佳答案

项目有两个问题:

首先: applicationIdde.moserp.inventory,但 list package nameorg.moserp.inventory。您应该将其更改为相同的,或者如果是故意的,您必须直接告诉 AA list package name:

apt {
    arguments {
        androidManifestFile variant.outputs[0]?.processResources?.manifestFile
        logLevel 'TRACE'
        resourcePackageName 'org.moserp.inventory'
    }
}

第二:您在 list 中声明原始 Activity ,而不是生成的 Activity 。将其更改为 MainActivity_

关于Android 注释和新的 Android 数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32819375/

相关文章:

Android Annotations/Gradle/Android Studio 构建问题

java - Android REST POST 丢失日期值

java - Kotlin-android : unresolved reference databinding

android - Dagger 2 和 Android 数据绑定(bind)适配器 : cannot be provided without an @Inject or @Provides

javascript - JS : Bug converting string to Date

java - 通过套接字传输数据的问题

android-fragments - 如何在 Kotlin 中使用 AndroidAnnotation @FragmentArg?

java - Firestore - 嵌套集合的自定义对象

java - 如何通过局域网发出 HTTP 请求?

android - java.lang.IllegalStateException : DataBindingUtil. inflate<ViewDataBinding>(...) 在尝试使用 DataBindingUtil 膨胀时不能为 null