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

标签 android gradle build build-tools

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

WTF! WTF2!

我还尝试切换到推荐的 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 系统上。我花了一整天修改脚本但没有成功,此时我很无助。

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

最佳答案

原因是依赖:

compile 'com.lambdaworks:scrypt:1.4.0'

显然会自动获取我的笔记本电脑的架构并将该标志贴在其中。

关于无论如何,Android 构建工具只会构建 x86_64。 APK 通过 adb 安装运行,但在 Play 商店中显示不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43198586/

相关文章:

android - Android 权限以什么顺序显示?

android - Unresolved reference 包android studio

android - 字体已在Android Gradle构建中以不兼容的格式定义

macos - 构建 .dmg 包需要 Apple 开发者 ID

iphone - 更改 iOS 应用的产品名称后出现代码签名错误

java - 使用循环删除某些布局 View

java - 安卓 SIP : How to make audio call without using SIP address (I want to use real phone number instead)

android - EditText 上的 ImageSpan(笑脸)。使用 SwiftKey 键盘不起作用

javascript - 电容器(不存在build.gradle/不允许进行操作)无法构建Android的React应用

python - 如何在不支持 tk 的情况下构建 Python3?