2016-06-18 18 views
7

mój projekt build.gradlestudio android 2.2 jak stosować dagger2 bez wtyczki android-apt

buildscript { 
    repositories { 
    jcenter() 
} 
dependencies { 
    classpath 'com.android.tools.build:gradle:2.2.0-alpha3' 
    classpath 'com.google.dagger:dagger-compiler:2.2' 
    classpath 'com.google.guava:guava:19.0' 

    // NOTE: Do not place your application dependencies here; they belong 
    // in the individual module build.gradle files 
    } 
} 
allprojects { 
    repositories { 
     jcenter() 
    } 
} 

task clean(type: Delete) { 
    delete rootProject.buildDir 
} 

mój moduł build.gradle

android { 
compileSdkVersion 24 
buildToolsVersion '24.0.0' 

defaultConfig { 
    applicationId "com.aber.app.acgtalk" 
    minSdkVersion 19 
    targetSdkVersion 24 
    versionCode 1 
    versionName "1.0" 
    jackOptions { 
     enabled true 
    } 
} 

buildTypes { 
    release { 
     minifyEnabled true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 

compileOptions { 
    sourceCompatibility JavaVersion.VERSION_1_8 
    targetCompatibility JavaVersion.VERSION_1_8 
} 
} 

ext { 
supportLibVersion = '24.0.0' 
} 

dependencies { 
    compile 'com.google.dagger:dagger:2.2' 
    annotationProcessor 'com.google.dagger:dagger-compiler:2.2' 
    debugAnnotationProcessor 'com.google.dagger:dagger-compiler:2.2' 
    provided 'javax.annotation:jsr250-api:1.0' 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    testCompile 'junit:junit:4.12' 
    compile "com.android.support:appcompat-v7:${supportLibVersion}"; 
    compile "com.android.support:recyclerview-v7:${supportLibVersion}"; 
    compile "com.android.support:design:${supportLibVersion}"; 
    compile "com.android.support:support-v13:${supportLibVersion}"; 
    compile "com.android.support:support-annotations:${supportLibVersion}"; 
    compile "com.android.support:gridlayout-v7:${supportLibVersion}"; 
    compile "com.android.support:cardview-v7:${supportLibVersion}"; 
    compile "com.android.support:preference-v14:${supportLibVersion}"; 
    compile 'com.squareup.okhttp3:okhttp:3.2.0'; 
    compile 'com.google.code.gson:gson:2.6.2' 
    compile 'com.squareup.retrofit2:retrofit:2.0.2' 
    compile 'com.squareup.retrofit2:converter-gson:2.0.2' 
} 

co jest złego w tym, jak za pomocą funkcji annotationProcessor w Androidzie 2.2, jak poprawnie konwertować procesor komentarzy Dagger2?

new Jack annotations processors

Odpowiedz

9

Tak, z android Gradle plugin 2.2.0 wersji wtyczki android-apt nie jest już potrzebna przetwarzanie adnotacji. Funkcja apt została dołączona do najnowszej wtyczki android gradle. Nazywa się to teraz: annotationProcessor, co było w scenariuszu kompilacji. Jednak w skrypcie było kilka źle skonfigurowanych rzeczy.

Po pierwsze, kompilator sztyletu nie powinien być dodawany do ścieżki klasy. Usuń więc tę linię: classpath 'com.google.dagger:dagger-compiler:2.2'.

Używasz wtyczki android gradle w wersji alpha3. Spróbuj użyć najnowszej wersji, więc zmień na classpath 'com.android.tools.build:gradle:2.2.2'.

Blok deklaracji zależności wygląda legalnie. Więc spróbuj dokonać powyższych zmian, aby sprawdzić, czy to zadziała.

-1

Ty incorretly włożyć wtyczkę ścieżkę klasy. Usuń następującą linię w budowie projektu:

classpath 'com.google.dagger:dagger-compiler:2.2' 

i wstawić:

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 

Następnie w module build.gradle, dodaj następujący kod po zastosowanie wtyczki Android:

// add after applying plugin: 'com.android.application' 
apply plugin: 'com.neenbedankt.android-apt' 

Dodaj następującą linię do swoich zależności:

// apt command comes from the android-apt plugin 
apt 'com.google.dagger:dagger-compiler:2.2' 
compile 'com.google.dagger:dagger:2.2' 
provided 'javax.annotation:jsr250-api:1.0' 

Aby uzyskać więcej informacji przeczytaj tutaj:
https://github.com/codepath/android_guides/wiki/Dependency-Injection-with-Dagger-2

i dla przykładowego projektu można znaleźć tutaj:
https://github.com/spirosoik/AndroidArchitecturePadawans

+3

jest Jack automatycznie zastosuje procesory adnotacji w ścieżce klas. Aby użyć procesora adnotacji w czasie kompilacji bez dołączania go do apk, użyj nowego zakresu zależności adnotacjiProcessor: Włącz przetwarzanie komentarzy Jack –

+0

Nie rozumiem, co masz na myśli :(. Imho, wtyczka dla Androida do apt nie będzie w tym artefaktu adnotacji w apk. https://bitbucket.org/hvisser/android-apt –

+2

jest nowy kompilator Jack, to nowa funkcja: Aby użyć procesora adnotacji w czasie kompilacji bez pakowania go w apk, użyj nowy zakres zależności adnotacjiProcesor, taki jak ten: adnotationProcessor "com.google.dagger: dagger-kompilator: 2.2" umieść to w zależności modułu. zobacz http://android-developers.blogspot.jp/2016/05/android-studio -22-preview-new-ui.html –

Powiązane problemy