React原生Android应用程序在一部手机上工作,但在另一部手机上崩
我有使用React Native(不是expo)开发的
android移动应用程序.我在模拟器(android和IOS)上测试它,它工作正常.然后我把它发布到谷歌播放.我在3台设备上测试了它:
1)一加一 – 工作正常 2)三星S8 – 崩溃 3)三星S7 – 崩溃 我找到了崩溃的原因.三星正在采用app-arm64-v8a-release.apk,而1正在通过谷歌播放安装app-armeabi-v7a-release.apk.如果我在三星手机上手动下载app-armeabi-v7a-release.apk(而不是通过谷歌播放),那么应用程序工作正常.一些问题: 1)三星应该下载它正在下载的内容(app-arm64-v8a-release.apk)? 注意:如果我在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 } } } } 解决方法
由于RN目前仅支持32位应用程序,因此您需要使用最新的RN版本0.58.3
我已成功使用它并测试64位应用程序,或者您可以删除应用程序的64版本,然后playstore将自动为用户安装32位版本的应用程序. 只支持32位支持替换你的 包括“x86”,“x86_64”,“armeabi-v7a”,“arm64-v8a” 同 包括“x86”“armeabi-v7a” 和类似的 def abiCodes = [‘x86’:1,’x86_64’:2,’armeabi-v7a’:3,’arm64-v8a’:4] 同 def abiCodes = [‘x86’:1,’armeabi-v7a’:2] 您可以跟踪RN 64位问题here (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |