web-dev-qa-db-fra.com

impossible de mettre à jour Android studio 3.1: configuration conflictuelle: 'armeabi-v7a, x86' pendant le projet de synchronisation

voici mon fichier de version (app): 

apply plugin: 'com.Android.application'
apply plugin: 'io.fabric'
apply plugin: 'checkstyle'

def versions = ['appcompat_v7' : '25.1.0',
                'butterknife'  : '8.4.0',
                'leak_canary'  : '1.5',
                'card_view'    : '25.1.0',
                'design'       : '25.1.0',
                'photoview'    : '1.2.4',
                'play_services': '10.0.1']



task checkstyle(type: Checkstyle) {
    configFile file("${project.rootDir}/checkstyle/checkstyle.xml")
    configProperties.checkstyleSuppressionsPath = file("${project.rootDir}/config/quality/checkstyle/suppressions.xml").absolutePath
    // Where is my suppressions file for checkstyle is...
    source 'src'
    include '**/*.Java'
    exclude '**/gen/**'
    classpath = files()
}


Android {
    compileSdkVersion 25
    buildToolsVersion '27.0.3'
    flavorDimensions "versionCode"

    useLibrary 'org.Apache.http.legacy'
    dexOptions {
        // Skip pre-dexing when running on Travis CI or when disabled via -Dpre-dex=false.
        preDexLibraries = preDexEnabled && !travisBuild
    }

    defaultConfig {

        ndk {
            abiFilters 'x86', 'armeabi-v7a'
        }

        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        vectorDrawables.useSupportLibrary = true
        testInstrumentationRunner "Android.test.InstrumentationTestRunner"
    }
    signingConfigs {
        release
    }
    buildTypes {
        debug {
            debuggable true
        }
        release {
            //runProguard true
            proguardFile file('Android.pro')
            proguardFile getDefaultProguardFile('proguard-Android.txt')
            signingConfig signingConfigs.release
        }
    }

    splits {
        abi {
            enable true
            reset()
            include 'x86', 'armeabi-v7a'
            universalApk true
        }
    }

    // map for the version code


    productFlavors {

        playstore {

        }
        develop {
        }
    }


    lintOptions {
        //I'm too lazy to translate everything
        abortOnError false
    }
    externalNativeBuild {
        ndkBuild {
            path 'src/main/jni/Android.mk'
        }
    }
}

def Properties props = new Properties()
def propFile = new File('signing.properties')
if (propFile.canRead()) {
    props.load(new FileInputStream(propFile))

    if (props != null && props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') &&
            props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) {
        Android.signingConfigs.release.storeFile = file(props['STORE_FILE'])
        Android.signingConfigs.release.storePassword = props['STORE_PASSWORD']
        Android.signingConfigs.release.keyAlias = props['KEY_ALIAS']
        Android.signingConfigs.release.keyPassword = props['KEY_PASSWORD']
    } else {
        println 'signing.properties found but some entries are missing'
        Android.buildTypes.release.signingConfig = null
    }
} else {
    println 'signing.properties not found'
    Android.buildTypes.release.signingConfig = null
}

buildscript {
    repositories {
        jcenter()
        mavenCentral()

    }
}


dependencies {
    compile project(":tess-two:tess-two")
    compile project(":volley")
    compile project(":real-time-ocr")

    compile 'com.github.barteksc:pdfium-Android:1.5.0'
    compile fileTree(dir: 'src/main/libs', include: '*.jar')

    debugCompile "com.squareup.leakcanary:leakcanary-Android:${versions.leak_canary}"
    releaseCompile "com.squareup.leakcanary:leakcanary-Android-no-op:${versions.leak_canary}"
    compile 'com.viewpagerindicator:library:2.4.1@aar'
    compile "com.commit451:PhotoView:${versions.photoview}"
    compile 'com.google.code.findbugs:jsr305:2.0.2'
    compile "com.google.guava:guava:18.0"
    compile 'de.greenrobot:eventbus:2.4.0'
    compile 'com.nineoldandroids:library:2.4.0'
    compile "com.Android.support:design:${versions.design}"
    compile "com.Android.support:appcompat-v7:${versions.appcompat_v7}"
    compile 'org.Apache.commons:commons-compress:1.5'
    compile "com.Android.support:cardview-v7:${versions.card_view}"
    compile 'com.google.code.gson:gson:2.8.2'
    compile "com.jakewharton:butterknife:${versions.butterknife}"
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
    compile 'com.google.Android.gms:play-services-vision:9.4.0+'
    compile group: 'com.facebook.Android', name: 'facebook-Android-sdk', version: '4.25.0'



    androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.0'
    androidTestCompile 'com.google.dexmaker:dexmaker:1.0'
    androidTestCompile 'org.mockito:mockito-core:1.10.17'
    androidTestCompile 'junit:junit:4.12'


    testCompile 'junit:junit:4.12'
    testCompile "org.mockito:mockito-all:1.10.19"
    testCompile("org.robolectric:robolectric:3.0-rc2") {
        exclude group: 'commons-logging', module: 'commons-logging'
    }
    compile('com.crashlytics.sdk.Android:crashlytics:2+') {
        transitive = true;
    }
    compile('com.crashlytics.sdk.Android:crashlytics-ndk:1+@aar') {
        transitive = true;
    }


    compile 'com.Android.support.constraint:constraint-layout:1.0.2'
    compile 'com.shawnlin:number-picker:2.4.4'
    compile 'com.squareup.picasso:picasso:2.5.2'



}
crashlytics {
    enableNdk true
    androidNdkOut '/Users/renard/devel/textfairy/tess-two/tess-two/obj'
    androidNdkLibsOut '/Users/renard/devel/textfairy/tess-two/tess-two/libs'
}
apply plugin: 'com.google.gms.google-services'

Le studio Android ne peut pas synchroniser le projet et m'obtenir cette erreur:

Configuration en conflit: 'armeabi-v7a, x86' dans ndk Les filtres abi ne peuvent pas être présents lorsque des filtres fractionnements sont définis: x86, armeabi-v7a

La configuration 'compiler' est obsolète et a été remplacée par 'implémentation' . Il sera supprimé fin 2018

La configuration 'debugCompile' est obsolète et a été remplacée par 'debugImplementation' . Il sera supprimé fin 2018

La configuration 'androidTestApi' est obsolète et a été remplacée par 'androidTestImplementation' . Il sera supprimé fin 2018

La configuration 'releaseCompile' est obsolète et a été remplacée par 'releaseImplementation' . Il sera supprimé fin 2018

La configuration 'testCompile' est obsolète et a été remplacée par 'testImplementation' . Il sera supprimé fin 2018

La configuration 'testApi' est obsolète et a été remplacée par 'testImplementation' . Il sera supprimé fin 2018

La configuration 'androidTestCompile' est obsolète et a été remplacée par 'androidTestImplementation' . Il sera supprimé fin 2018

L'option 'Android.enableAapt2' est obsolète et ne devrait plus être utilisée . Utilisez 'Android.enableAapt2 = true' pour supprimer cet avertissement . Il sera retiré fin 2018.

La configuration 'compiler' est obsolète et a été remplacée par 'implémentation' . Il sera supprimé fin 2018

L'option 'Android.enableAapt2' est obsolète et ne devrait plus être utilisée . Utilisez 'Android.enableAapt2 = true' pour supprimer cet avertissement . Il sera retiré fin 2018.

La configuration 'testCompile' est obsolète et a été remplacée par 'testImplementation' . Il sera supprimé fin 2018

La configuration 'testApi' est obsolète et a été remplacée par 'testImplementation' . Il sera supprimé fin 2018

L'option 'Android.enableAapt2' est obsolète et ne devrait plus être utilisée . Utilisez 'Android.enableAapt2 = true' pour supprimer cet avertissement . Il sera retiré fin 2018.

La configuration 'compiler' est obsolète et a été remplacée par 'implémentation' . Il sera supprimé fin 2018

si je supprime cette ligne

defaultConfig {

    ndk {
        abiFilters 'x86', 'armeabi-v7a'
    }

le projet a été synchronisé avec succès mais quand build m'a donné cette erreur 

Impossible d'exécuter aapt

J'essaie déjà de nettoyer et de reconstruire le projet mais je ne travaille toujours pas! Je publie également le fichier build.gradle (Project)

    // Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
        mavenCentral()
        jcenter()
        google()
    }
    dependencies {
        classpath 'io.fabric.tools:gradle:1+'
        classpath 'com.google.gms:google-services:3.0.0'
        classpath 'com.Android.tools.build:gradle:3.1.0'
    }
}



allprojects {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
        maven { url "http://dl.bintray.com/populov/maven" }
        jcenter()
        maven {
            url "http://oss.sonatype.org/content/repositories/snapshots"
        }
        maven { url 'https://oss.jfrog.org/artifactory/oss-snapshot-local/' }
        maven {
            url "https://maven.google.com" // Google's Maven repository
        }
    }

}

ext {
    travisBuild = System.getenv("TRAVIS") == "true"
    // allows for -Dpre-dex=false to be set
    preDexEnabled = "true".equals(System.getProperty("pre-dex", "true"))
}

mon fichier gradle-wrapper.properties

    #Tue Mar 27 14:42:14 CEST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.Zip

et mon fichier gradle.properties

    ndkDir=/Users/giuliopettenuzzo/Library/Android/sdk/ndk-bundle
org.gradle.jvmargs=-XX\:MaxPermSize\=512m
Android.enableAapt2=false

aidez-moi s'il vous plaît, j'ai passé une journée dans ce numéro !!

16
Giulio Pettenuzzo

ndk.abiFilters configuration signifie que seules les architectures de processeur sélectionnées des bibliothèques natives seront incluses dans l'APK final.

D'autre part, splits.abi.enable true indique au compilateur de générer des fichiers APK séparés pour des architectures sélectionnées.

Il semble que ces deux configurations ne puissent pas être définies ensemble. Donc, vous avez deux options:

  1. Désactiver le fractionnement APK (vous l'avez déjà compris). Alors vous aurez un APK.

  2. Supprimez le paramètre ndk.abiFilters. Que vous aurez plusieurs APK (probablement beaucoup plus petits). De plus, avec universalApk true, un APK universel avec toutes les architectures sera généré (probablement beaucoup plus grand que dans l'option 1).

Ensuite, remplacez compile par le nouveau mot clé implementation. Je pense que cela ressort clairement du message d'erreur.

14
Peter Knut

Enfin je l'ai obtenu en mettant 

abi {
    enable false
    reset()
    include 'x86', 'armeabi-v7a'
    universalApk true
}

et multiDexEnabled true mais je ne sais pas si cela résout le problème ou ignore simplement l'erreur.

5
Giulio Pettenuzzo

J'ai ouvert un ancien projet et lorsque je voulais le construire, j'avais beaucoup d'erreurs, ce qui était très frustrant. J'ai remplacé compiler avec implémentation et ajouté tous les codes requis. Enfin, le projet a été construit avec succès. 

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    androidTestImplementation ('com.Android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.Android.support', module: 'support-annotations'
    })
    implementation 'com.Android.support:support-v4:27.1.1'
    implementation 'com.Android.support:cardview-v7:27.1.1'
    implementation 'com.Android.support:customtabs:27.1.1'
    implementation 'com.Android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.facebook.Android:facebook-Android-sdk:4.+'
    implementation 'com.facebook.Android:account-kit-sdk:4.+'
    implementation 'com.Android.volley:volley:1.1.0-rc2'
    implementation 'com.google.Android.gms:play-services-ads:15.0.1'
    testImplementation 'junit:junit:4.12'
}
0
dependencies {
implementation 'com.Android.support:design:26.1.0'
implementation 'com.Android.support:support-v4:26.1.0'
implementation 'com.google.Android.gms:play-services-maps:9.6.1'
implementation fileTree(dir: 'libs', include: ['*.jar'])
androidTestImplementation ('com.Android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.Android.support', module: 'support-annotations'
})
implementation 'com.Android.support:appcompat-v7:26.1.0'
implementation 'com.Android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
implementation 'com.google.firebase:firebase-core:9.6.1' //referencia  a la version de firebase
implementation 'com.google.firebase:firebase-database:9.6.1' // referencia a la base de datos
implementation 'com.google.firebase:firebase-auth:9.6.1'
implementation 'com.google.Android.gms:play-services-auth:9.6.1'

implementation 'com.google.Android.gms:play-services-maps:9.6.1'

// aqui se agrega la referencia a la autentificacion

}

** remplace compile par implemenntation androidCompileTest par androidTestImplementation **

0
erick erazo