关于hermes 的介绍就不细说了,可以看介绍文档里的相关说明。
RN
中 Android 端 使用的js引擎
是 JavaScriptCore: org.webkit:android-jsc
;
Facebook
专门为RN
开发了一个更快的引擎:hermes: RN 使用 hermes 指南
0.60.4以上版本的RN
使用 Hermes
很简单,只需要在 android/app/build.gradle
中,将enableHermes
的值改为true
project.ext.react = [
entryFile: "index.js",
enableHermes: true // clean and rebuild if changing
]
然后 clean
一下 重新安装apk就行了。
怎么确认 Hermes
引擎生效了呢?
这是这篇文章的重点... 按照文档的介绍,Hermes
引擎生效后,js的全局变量global
里会有一个HermesInternal
,于是就可以用以下方法来判断:
const isHermes = () => global.HermesInternal != null;
于是使用
console.log(isHermes())
但是,控制台打印的一直是false
,难道Hermes
引擎没生效?直接打印global.HermesInternal
的值,是 undefined
,折腾了很久,一直怀疑是不是集成的步骤错了。。。
后来恍然大悟,要看到console
日志,需要开启debug
模式,开启debug
后,js
代码就是浏览器执行的了,引擎是浏览器V8
引擎,并不是Hermes
;关闭debug
模式时,才是Android
手机执行js
代码,此时的引擎才是Hermes
。 所以,要判断是否是Hermes
引擎,还是不能通过开启debug
通过console
啊~
网友评论