问题描述
android studio 编译React-Native正式包后,编译过程正常,打包apk也正常,安装过后启动应用直接崩溃,查看日志提醒:reactnative unable to load script from assets 'index.android.bundle'
,其意思就是打包的时候index.android.bundle没有打进assets中。
解决办法
1.手动创建
- 首先手动在main下建立一个assets文件夹
- 然后进入项目的根目录下执行:
React-native bundle --platform Android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
注意:index.android.js 有些项目中是index.js,所以这个名称根据根目录下的文件名称而定。
- 按照android studio 正常打包签名流程走完即可
2.查找问题原因解决
- 查看当前SDK版本,查看原来是否支持androidx,如果项目本身没有升级androidx则需要把引用到androidx的依赖全部修改成低版本。(检测依赖命令:
gradlew :app:dependencies
或./gradlew :app:dependencies
) - 检测gradle版本是否升级了,比如react-native0.42对应的gradle4.4,所以修改gradle/gradle-wrapper.properties下的文件到对应版本,并修改android/build.gradle:
dependencies {
classpath 'com.android.tools.build:gradle:3.1.2'
}
注意:3.1.2是gradle4.4对应,你应该根据自己项目而定,
Gladle与Plugin对应关系
- 如果提醒有
Must be compiled first into .flat file
字样,应在gradle.properties中加上:
android.enableAapt2=false
- 正常打包签名即可
我在项目基本就是遇到这些问题,如果你遇到的更多,可以从android studio 、 SDK 、Gradle这三个的版本入手查找问题。
网友评论