3
votes

Impossible de trouver le fichier AndroidManifest.xml, en utilisant le dossier de génération après les annotations Android

Je ne peux pas exécuter mon projet après avoir ajouté l'annotation @EActivity à ma classe.

Voici mon projet Gradle:

apply plugin: 'com.android.application'
def AAVersion = '4.2.0'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.tasks"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

    implementation 'com.android.support:support-annotations:28.0.0'

    annotationProcessor "org.androidannotations:androidannotations:$AAVersion"
    implementation "org.androidannotations:androidannotations-api:$AAVersion"
}

Voici mon module Gradle: app

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        google()
        jcenter()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.2'
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()

    }
}

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

Après avoir ajouté les annotations Android dans mon Gradle, j'ai remarqué que mon AndroidMannifest n'était pas automatiquement modifié (il manque le _ dans l'activité), et lorsque j'ajoute cela manuellement, il est mis en surbrillance en rouge.

Si je lance le projet normalement (sans modifier le fichier AndroidMannifest ou changer la classe en Annotations), il fonctionnera normalement.

Si j'ajoute les annotations et modifier le manifeste je reçois l'erreur:

erreur: impossible de trouver le fichier AndroidManifest.xml, en utilisant la génération dossier [C: \ Users \ Asusc \ AndroidStudioProjects \ Tasks \ app \ build \ generated \ source \ apt \ debug])

Avez-vous une idée de ce que je pourrais faire de mal?


0 commentaires

3 Réponses :


6
votes

Vous devez mettre à jour vers AndroidAnnotations 4.6.0. Cette version prend en charge Android Gradle Plugin 3.3. +.


4 commentaires

Ça a marché! J'ai mis à niveau l'AAVersion pour 4.6.0 et supprimé l'implémentation de ligne 'com.android.support:support-annotations:28.0.0' Merci !!


n'a pas fonctionné dans mon cas. AAVersion est 4.6.0 et gradle est 3.5.2.


@NirojShr Veuillez essayer de rétrograder la version Gradle vers 3.4.1.


J'utilisais AA 4.6.0 et gradle 3.5.3. même si je trouve ridicule que je doive revenir à une version aussi ancienne, gradle 3.4.1 a en effet fonctionné.



4
votes

Si vous utilisez AndroidAnnotations 4.6.0 avec Android Gradle Plugin 3.5. +, vous pouvez rétrograder la version Android Gradle Plugin vers 3.4.1 pour corriger.

classpath 'com.android.tools.build:gradle:3.4.1'


0 commentaires

7
votes

Dans mon cas, l'ajout de ceci à build.gradle l'a corrigé:

android {
   ...
   defaultConfig {
       ...
       javaCompileOptions {
            annotationProcessorOptions {
            arguments = ["androidManifestFile": "$projectDir/src/main/AndroidManifest.xml".toString()]
            }
        }
    }
}


1 commentaires

La rétrogradation vers gradle 3.4.1 n'était pas une option que je voulais envisager et cette solution m'est venue. Merci