Как использовать аннотации Android и его процессор аннотаций с помощью jack?

#android #gradle #android-annotations #annotation-processing #jack

#Android #gradle #android-аннотации #обработка аннотаций #джек

Вопрос:

Кто-нибудь знает, как использовать аннотации Android с компилятором jack?

Здесь мое приложение / build.gradle и здесь мой проект build.gradle

При такой конфигурации у меня появляется это сообщение об ошибке при сборке моего проекта :

 Error:Could not get unknown property 'classpath' for task ':app:transformJackWithJackForDebug' of type com.android.build.gradle.internal.pipeline.TransformTask.
  

Ответ №1:

Вам следует полностью удалить android-apt плагин и apt блок, потому что он не работает с обработкой аннотаций Jack. Кроме того, вы должны объявить processssors в annotationProcessor конфигурации. Наконец, вы должны добавить параметры обработки аннотаций в jack (у которого пока нет общедоступного API для каждого варианта).

Вот ваша измененная сборка.gradle:

 repositories {
    jcenter()
    mavenCentral()
}


apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2"
    defaultConfig {
        applicationId "com.frlgrd.streamzone"
        minSdkVersion 21
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        jackOptions {
            enabled true
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

// Android Annotations
def AAVersion = '4.0.0'

dependencies {

    // Google
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.android.support:design:24.2.1'

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

    // RX
    compile 'com.tbruyelle.rxpermissions:rxpermissions:0.7.1@aar'
    compile 'io.reactivex:rxandroid:1.2.1'
    compile 'io.reactivex:rxjava:1.1.6'
}

// add annotation processing options to jack
android.applicationVariants.all { variant ->
    variant.variantData.variantConfiguration.javaCompileOptions.annotationProcessorOptions
            .arguments = ['androidManifestFile': variant.outputs[0]?.processResources?.manifestFile?.absolutePath]
}
  

Комментарии:

1. У меня не сработало ( compileSdkVersion 25 , buildToolsVersion '25.0.2' targetSdkVersion 23 , AAVersion = '4.2.0' ,,,)

2. @WonderCsabo компилятор сообщает, что класс SomeClass_ не найден, что означает, что процессор аннотаций AA не обработан, поэтому сгенерированный класс не найден.

3. Можете ли вы открыть новый вопрос со своей проблемой?