2015-09-28 13 views
6

Wenn ich die androidannotations apt-Zeile in meiner Gradle-Build-Datei aktiviere, werden die Datenbindungsklassen nicht mehr erkannt. Wenn ich nur die Zeile "apt .." auskommentiere, dann kompiliert alles wieder.Android-Annotationen und neue Android-Databinding

Könnte es sein, dass die Android-Annotationen irgendwie verhindern, dass das Databinding apt ausgeführt wird? Oder gibt es eine falsche Ausführungsreihenfolge?

Grüße, Thomas

Fehler von gradle build: $ Gradle bereinigter Build

: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 

build.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:[email protected]' 
    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' 
    } 

} 
+0

Können Sie das (reduzierte) Projekt teilen, damit wir es uns ansehen können? – WonderCsabo

+0

Ja, hier ist es: https://github.com/thomasletsch/sample-app –

Antwort

3

Es gibt zwei Probleme mit dem Projekt:

Erstens: Die applicationId ist de.moserp.inventory, aber das Manifest package name ist org.moserp.inventory. Sie sollten es auf das gleiche ändern, oder wenn es beabsichtigt ist, müssen Sie direkt AA sagen das Manifest package name:

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

Zweitens: Sie erklären die ursprüngliche Aktivität im Manifest, anstelle des erzeugten ein. Ändern Sie es in MainActivity_.

+0

Sie haben absolut Recht, die Änderung der ApplicationId auf den Paketnamen behoben die Probleme! Sehr geschätzt! –