本文介绍了无法更新 android studio 3.1:配置冲突:同步项目期间的“armeabi-v7a,x86"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的构建 gradle(应用程序)文件:

this is my build gradle (app) file:

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'

android studio 无法同步项目并给我这个错误:

android studio can't sync project and get me this error:

冲突的配置:当设置拆分 abi 过滤器时,ndk abiFilters 中的armeabi-v7a,x86"不能存在:x86,armeabi-v7a

配置编译"已过时并已替换为实现".将于2018年底移除

Configuration 'compile' is obsolete and has been replaced with 'implementation'. It will be removed at the end of 2018

配置debugCompile"已过时,已被debugImplementation"取代.将于2018年底移除

Configuration 'debugCompile' is obsolete and has been replaced with 'debugImplementation'. It will be removed at the end of 2018

配置androidTestApi"已过时并已替换为androidTestImplementation".将于2018年底移除

Configuration 'androidTestApi' is obsolete and has been replaced with 'androidTestImplementation'. It will be removed at the end of 2018

配置releaseCompile"已过时,已被releaseImplementation"替换.将于2018年底移除

Configuration 'releaseCompile' is obsolete and has been replaced with 'releaseImplementation'. It will be removed at the end of 2018

配置testCompile"已过时,已被testImplementation"取代.将于2018年底移除

Configuration 'testCompile' is obsolete and has been replaced with 'testImplementation'. It will be removed at the end of 2018

配置testApi"已过时,已被testImplementation"取代.将于2018年底移除

Configuration 'testApi' is obsolete and has been replaced with 'testImplementation'. It will be removed at the end of 2018

配置androidTestCompile"已过时并已替换为androidTestImplementation".将于2018年底移除

Configuration 'androidTestCompile' is obsolete and has been replaced with 'androidTestImplementation'. It will be removed at the end of 2018

选项android.enableAapt2"已弃用,不应再使用.使用 'android.enableAapt2=true' 删除此警告.将于 2018 年底移除.

The option 'android.enableAapt2' is deprecated and should not be used anymore. Use 'android.enableAapt2=true' to remove this warning. It will be removed at the end of 2018.

配置编译"已过时并已替换为实现".将于2018年底移除

Configuration 'compile' is obsolete and has been replaced with 'implementation'. It will be removed at the end of 2018

选项android.enableAapt2"已弃用,不应再使用.使用 'android.enableAapt2=true' 删除此警告.将于 2018 年底移除.

The option 'android.enableAapt2' is deprecated and should not be used anymore. Use 'android.enableAapt2=true' to remove this warning. It will be removed at the end of 2018.

配置testCompile"已过时,已被testImplementation"取代.将于2018年底移除

Configuration 'testCompile' is obsolete and has been replaced with 'testImplementation'. It will be removed at the end of 2018

配置testApi"已过时,已被testImplementation"取代.将于2018年底移除

Configuration 'testApi' is obsolete and has been replaced with 'testImplementation'. It will be removed at the end of 2018

选项android.enableAapt2"已弃用,不应再使用.使用 'android.enableAapt2=true' 删除此警告.将于 2018 年底移除.

The option 'android.enableAapt2' is deprecated and should not be used anymore. Use 'android.enableAapt2=true' to remove this warning. It will be removed at the end of 2018.

配置编译"已过时并已替换为实现".将于2018年底移除

Configuration 'compile' is obsolete and has been replaced with 'implementation'. It will be removed at the end of 2018

如果我删除这一行

defaultConfig {

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

项目同步成功但是当构建给我这个错误

the project sync sucessfullybut when build give me this error

执行 aapt 失败

我已经尝试清理和重建项目,但仍然无法正常工作!我还发布了 build.gradle(项目)文件

I already try to clean and rebuild project but still not working!I also post the build.gradle (Project) file

    // 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"))
}

我的 gradle-wrapper.properties 文件

my gradle-wrapper.properties file

    #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

和我的 gradle.properties 文件

and my gradle.properties file

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

推荐答案

ndk.abiFilters 配置意味着只有选定的原生库处理器架构会被包含在最终APK.

ndk.abiFilters configuration means that only selected processor architectures of native libraries will be included in the final APK.

另一方面,splits.abi.enable true 告诉编译器为选定的架构生成分离的 APK.

On the other hand, splits.abi.enable true tells the compiler to generate separated APKs for selected architectures.

看来这两个配置不能同时设置.所以你有两个选择:

It seams that this two configuration can't be set together. So you have two options:

  1. 禁用拆分 APK(您已经知道了).您将拥有一个 APK.

  1. Disable splitting APK (you've figured it out already). Than you will have one APK.

删除 ndk.abiFilters 设置.比您将拥有多个(可能要小得多)APK.此外,如果 universalApk true,将生成具有所有架构的通用 APK(可能比选项 1 中的大得多).

Remove ndk.abiFilters setting. Than you will have multiple (probably much smaller) APKs. Moreover, with universalApk true, an universal APK with all architectures will be generated (probably much larger than in option 1).

然后,将 compile 替换为新的关键字 implementation.我认为,从错误消息中可以清楚地看出这一点.

Than, replace compile with new keyword implementation. I think, this is clear from error message.

这篇关于无法更新 android studio 3.1:配置冲突:同步项目期间的“armeabi-v7a,x86"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-06 19:29