Android Build Tools 只构建 x86_64 无论如何。 APK 通过 adb 安装运行,但在 Play 商店中显示不兼容

Android Build Tools only builds x86_64 no matter what. APK runs installed via adb, but shows incompatible on Play Store

所以这正在发生。无论我在 build.gradle 上尝试做什么,所有 APK 都带有 native_code = 'x86_64' 标志,所以当我将应用程序部署到商店时,结果是有 +15K 不兼容的设备,只有 19 个兼容。我首先想到的是,不知何故,安装了 NDK 是原因,或者是我修改了构建脚本。但是当我通过生成签名的 APK 向导时,它仍然会发生。 splits 块最初也丢失了,但没有帮助。最奇怪的是,当我通过控制台推送安装时,它工作正常!

我也尝试切换到推荐的 JRE,还有一些关于文件创建的 APK 命名策略,比如将输出移动到不同的目录或不使用文件构造函数。

我的 build.gradle 看起来像这样:

defaultConfig {
    applicationId "com.chiskosystems.brokr"
    versionCode versionNumber
    versionName "${versionMajor}.${versionMinor}.${versionPatch} (${versionBuild}) Release"
    minSdkVersion 16
    targetSdkVersion 25
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true

    jackOptions {
        enabled false
    }

    vectorDrawables {
        useSupportLibrary true
    }
}

splits {
    abi {
        enable true
        reset()
        include 'armeabi', 'armeabi-v7a', 'arm64-v8a'
    }
}

project.ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'arm64-v8a': 3]

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        def fileNaming = "apk/brokr"
        def outputFile = output.outputFile

        output.versionCodeOverride =
                project.ext.versionCodes.get(output.getFilter(
                        com.android.build.OutputFile.ABI), 0) * 10000000 + android.defaultConfig.versionCode

    }

}

signingConfigs {
    release {
        try {
            storeFile file('../mystore.jks')
            keyAlias 'release'
            storePassword KEYSTORE_PASSWORD
            keyPassword KEY_PASSWORD
        } catch (ex) {
            throw new InvalidUserDataException("You should define KEYSTORE_PASSWORD and KEY_PASSWORD in gradle.properties.")
        }
    }
}

dataBinding {
    enabled true
}

dexOptions {
    javaMaxHeapSize "3g"
    preDexLibraries false
}

buildTypes {
    release {
        minifyEnabled false
        proguardFile 'path/proguard-project.pro'
        ...
        buildConfigField "String", 'SERVER', '"https://myfirebaseserver.com"'
        debuggable false
        signingConfig signingConfigs.release
    }
    debug {
        minifyEnabled false
        applicationIdSuffix ".debug"
        versionNameSuffix "-debug"
        buildConfigField "String", 'SERVER', '"https://myfirebaseserver.com"'
    }
}
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

productFlavors {
    sandbox {
        buildConfigField "String", 'PAYPAL_ENV', '"PayPalConfiguration.ENVIRONMENT_NO_NETWORK"'
    }
    full {
        buildConfigField "String", 'PAYPAL_ENV', '"PayPalConfiguration.ENVIRONMENT_PRODUCTION"'
        signingConfig signingConfigs.release
        targetSdkVersion 25
    }
}

在 Win 和 Unix 系统上都会发生。我花了一整天修改脚本,但没有成功,此时我很无助。

知道 bleep 是怎么回事吗?非常感谢!

原因是依赖关系:

compile 'com.lambdaworks:scrypt:1.4.0'

显然会自动抓取我的笔记本电脑的体系结构并将该标志贴在那里。