今天手贱把react-native android项目的cache和~/.gradle的cache全删了,再次搭建android的编译环境时,一切编译正常,并且打debug包的时候可以正常运行,无报错。
但是当我打release包的时候, 系统启动日志提示我:unable to load scripts from assets 'index.android.bundle' on real device。
一开始我以为是我的打包脚本出问题了,index.android.bundle这个bundle文件不存在,去对应的目录中检查了一遍,结果发现是有的。
于是又去google,发现遇到这个问题的人挺多,但是都是在debug的时候会遇到,经过一番探索,终于发现,原来我为了加快android build的速度,在~/.gradle/gradle.properties这个文件中添加了
org.gradle.configureondemand=true
首先说一下~/.gradle/gradle.properties这个文件的用途,~/.gradle/gradle.properties这个文件主要是用来个人全局配置gradle编译option的,一些与gradle设置相关的参数可以写在这里面,比如:
org.gradle.daemon=true 就是让你让你编译时使用守护进程。
org.gradle.parallel=true 使用并行编译
org.gradle.jvmargs=-Xmx2048m JVM最大允许分配的堆内存,按需分配
-XX:MaxPermSize=512m JVM最大允许分配的非堆内存,按需分配
而org.gradle.configureondemand=true则表示屏蔽一些task,所以当开启这个选项的时候,react-native中的一些task并没有被运行,导致打出来的包会报出:Unable to load script from assets index.android.bundle 这个错误。
如果你也遇到了这个问题,赶紧检查一下你的gradle配置吧!
网友评论