2

Ich arbeite derzeit an einer Android-Bibliothek, die mit AndroidAnnotations entwickelt wurde und einige Fragmente verwendet. Wenn es als Android-Anwendung kompiliert wird, ist der Code in Ordnung und alles funktioniert. Wenn es als Android-Bibliothek kompiliert wird, bricht es ab, weil es keine der von AndroidAnnotations generierten Klassen finden kann.Bibliotheks-Projekt mit AndroidAnnotations und Fragmenten kompilieren

Ich notierte jede Aktivität mit @EActivity(resName="activity_name") anstelle von @EActivity(R.layout.activity_name), und das behebt ein paar Fehler.

Das Problem, das ich begegnet ist, dass in einigen dieser Aktivitäten schaffen, ich so einige Fragmente dynamisch (zum Beispiel):

PhotoFragment fragment = PhotoFragment_.builder().someParams("a string param").build(); 

Wenn ich versuche, als Android-Bibliothek zu kompilieren, schlägt dieser Aufruf, weil Es kann die dynamisch generierte Klasse PhotoFragment_ nicht finden. Gibt es eine Lösung, damit es funktioniert? Entweder durch Ändern der Art, wie ich das Fragment erstellt habe, oder durch Konfigurieren von AndroidAnnotations?

EDIT 20/04/2016

Meine build.gradle (Modulebene):

apply plugin: 'com.android.library' 
apply plugin: 'android-apt' 
def AAVersion = '4.0.0' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 

    defaultConfig { 
     minSdkVersion 14 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 

    // Barcode library (ZXing) 
    compile 'com.journeyapps:zxing-android-embedded:3.0.2' 
    compile 'com.google.zxing:core:3.2.0' 

    // Android Annotations 
    apt "org.androidannotations:androidannotations:$AAVersion" 
    compile "org.androidannotations:androidannotations-api:$AAVersion" 

    // Android Bootstrap 
    compile 'com.beardedhen:androidbootstrap:2.1.0' 

    // Gson 
    compile 'com.google.code.gson:gson:2.4' 

    // Some auto-generated BS 
    compile 'com.android.support:design:23.2.1' 
    compile 'com.android.support:support-v4:23.2.1' 

    // Robotium --> Emulate User Interaction on tests 
    compile 'com.jayway.android.robotium:robotium-solo:5.5.4' 

    // Android Testing 
    androidTestCompile 'com.android.support:support-annotations:23.2.1' 
    androidTestCompile 'com.android.support.test:runner:0.5' 
    androidTestCompile 'com.android.support.test:rules:0.5' 

    // OkHTTP (HTTP Client Library) 
    compile 'com.squareup.okhttp3:okhttp:3.2.0' 
} 

apt { 
    arguments { 
     library 'true' 
    } 
} 

Vielen Dank!

+0

Sie sehen nicht die generierten Klassen innerhalb der Bibliothek oder die generierten Klassen außerhalb der Bibliothek (z. B. in der App, die die Bibliothek verwendet)? – WonderCsabo

+0

@WonderCsabo Ich sehe nicht die generierten Klassen in der Bibliothek. In diesem Moment versuche ich nur, die Bibliothek als AAR zu kompilieren, und ich kann nicht :) –

+0

Was ist Ihre AA-Version? – WonderCsabo

Antwort

3

Nach Erörterung stellte sich heraus, dass es einen Kompilierungsfehler im Code gab (nicht bezogen auf den Annotationsprozessor). Dies ist der AndroidAnnotations-Prozessor wurde nicht einmal aufgerufen, und die Klassen wurden nicht generiert.

Die Lösung behebt den "normalen" Kompilierungsfehler, dann werden Annotationsprozessoren ausgeführt. Es ist schwer, weil der Fehler in vielen generierten Klassen nicht gefundenen Fehlern verborgen ist, so dass ein gründliches Lesen erforderlich ist.

Verwandte Themen