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'
显然会自动抓取我的笔记本电脑的体系结构并将该标志贴在那里。
所以这正在发生。无论我在 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'
显然会自动抓取我的笔记本电脑的体系结构并将该标志贴在那里。