我已经用React Native(非expo)开发了一个Android手机应用程序。我在模拟器(Android和IOS)上进行了测试,它可以正常运行。然后我将应用发布到谷歌商店,在三个设备上进行了测试:
1)One plus one - 可以正常运行; 2)Samsung S8 - 崩溃; 3)Samsung S7 - 崩溃。
我发现了崩溃的原因。在安装1+1时,谷歌商店会安装app-armeabi-v7a-release.apk,而三星却会选择安装app-arm64-v8a-release.apk。但是如果我在三星手机上手动下载app-armeabi-v7a-release.apk(而不是通过谷歌商店),则应用程序可以正常工作。以下是一些问题:
1)三星手机是否应该下载它正在下载的内容(app-arm64-v8a-release.apk)? 2)如果是(我认为是对的),那么可能是什么问题?我如何调试生产应用程序?
注意:如果我在1+1和三星手机上手动安装通用apk,则应用程序会崩溃。
这是我的gradele.build文件。
def enableSeparateBuildPerCPUArchitecture = true
def enableProguardInReleaseBuilds = true
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId "com.bakbakapp.bakbak"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 3
versionName "3.0"
}
signingConfigs {
release {
if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
}
}
}
splits {
abi {
def isReleaseBuild = false
gradle.startParameter.taskNames.find {
if (it ==~ /:app:assemble.*Release/) {
isReleaseBuild = true
return true // break
}
return false // continue
}
reset()
enable enableSeparateBuildPerCPUArchitecture
universalApk true // If true, also generate a universal APK
include "x86", "x86_64", "armeabi-v7a", "arm64-v8a"
}
}
buildTypes {
release {
minifyEnabled enableProguardInReleaseBuilds
shrinkResources true
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
signingConfig signingConfigs.release
}
}
// Map for the version code that gives each ABI a value.
def abiCodes = ['x86':1, 'x86_64':2, 'armeabi-v7a':3, 'arm64-v8a':4]
// applicationVariants are e.g. debug, release
applicationVariants.all { variant ->
variant.outputs.each { output ->
def abi = output.getFilter(OutputFile.ABI)
if (abi != null) {
output.versionCodeOverride = abiCodes.get(abi, 0) * 1048576 + defaultConfig.versionCode
}
}
}
}