(gradle4.1)ReactNative assemblRelease,运行提示Unable to load script from assets ‘index.android.bundle‘.

2 篇文章 0 订阅
1 篇文章 0 订阅

公司RN项目添加Flavors风味打包后,打release包,报错Unable to load script from assets ‘index.android.bundle’.

首先解压apk发现asset下确实没有 index.android.bundle,但是构建文件夹output-generated文件夹里又生成了这个文件。

然后google了一下,找到了相关问题答案。
https://github.com/facebook/react-native/pull/30177
https://github.com/facebook/react-native/issues/29398

简单来说,就是因为gradle 6.5+ 和gradle plugin 4.1+后,引入了打包的一个问题。mergeResources任务运行在了currentAssetsCopyTask任务之前。导致打包index.android.bundle没有打包到apk里。

解决方法很简单,assembleRelease执行2次,第二次生成的包就能包含index.android.bundle文件了。

另外一个可能的解决办法,就是参考答案的,

//Fix for bundle not getting included in APK or AAB with android gradle plugin 4+
//Seems like there's a task ordering issue and the assets get computed before the bundle is copied
//This forces the copy task to run before merge resources
project.afterEvaluate {
        tasks.findAll { task ->
            task.name.startsWith('merge') && task.name.endsWith('Resources')
        }.each { t -> t.dependsOn "copyReleaseBundledJs" }
}

添加到android/app/build.gradle中。在mergexxxxResources命令后,再执行copyReleaseBundleJs任务。

这个方法没有验证。大家可以试一下。

最简单的办法还是assembleRelease两次。然后等后面的RN版本修复这个bug吧。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值