最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解React?Native項目中啟用Hermes引擎

 更新時間:2022年09月21日 10:32:15   作者:xiangzhihong  
這篇文章主要為大家介紹了React?Native項目中啟用Hermes引擎實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

引言

目前,最新版本的React Native(0.70.0及以上版本)已經(jīng)默認開啟了Hermes引擎。而Hermes則是專門針對React Native應用而優(yōu)化的全新JavaScript引擎,啟用Hermes引擎可以優(yōu)化啟動時間,減少內(nèi)存占用以及空間占用。

一、啟用 Hermes 引擎

1.1 Android

如果我們打開React Native項目的Android源碼,會在app/build.gradle文件中會看到如下的代碼。

if (enableHermes) {
    def hermesPath = "../../node_modules/hermes-engine/android/";
    debugImplementation files(hermesPath + "hermes-debug.aar")
    releaseImplementation files(hermesPath + "hermes-release.aar")
} else {
   implementation jscFlavor
}

上面代碼的含義是,如果開啟了就采用Hermes引擎,如果未開啟則使用以前的jsc引擎。所以,如果需要開啟Hermes引擎,只需要將enableHermes屬性值設置成true即可,如下所示。

  project.ext.react = [
      entryFile: "index.js",
-     enableHermes: false  // clean and rebuild if changing
+     enableHermes: true  // clean and rebuild if changing
  ]

另外,如果您正在使用ProGuard,還需要在ProGuard -rules.pro中添加如下的混淆規(guī)則。

-keep class com.facebook.hermes.unicode.** { *; }
-keep class com.facebook.jni.** { *; }

然后,使用如下的命令重新編譯項目,并運行項目。

cd android && ./gradlew clean
npx react-native run-android

1.2 iOS

從React Native 0.64開始,Hermes也支持在iOS上運行。要啟用Hermes for iOS,需要打開iOS/Podfile文件,并進行如下更改。

   use_react_native!(
     :path => config[:reactNativePath],
     # to enable hermes on iOS, change `false` to `true` and then install pods
     # By default, Hermes is disabled on Old Architecture, and enabled on New Architecture.
     # You can enable/disable it manually by replacing `flags[:hermes_enabled]` with `true` or `false`.
-    :hermes_enabled => flags[:hermes_enabled],
+    :hermes_enabled => true
   )

如果需要在iOS中開啟Hermes引擎,需要將上面的hermes_enabled 的值修改為 true。完成上述配置之后,再使用下面的命令重新運行項目。

cd ios && pod install
npx react-native run-ios

如果iOS使用的是Mac M1的架構(gòu),可能還會遇到Cocoapods 的一些兼容問題。如果在安裝 pods依賴時出現(xiàn)問題,可以嘗試運行下面的命令:

sudo arch -x86_64 gem install ffi
arch -x86_64 pod install

以上命令會安裝ffi包,用于在安裝和裝載 pods 時調(diào)用合適的系統(tǒng)架構(gòu)。

二、Hermes 引擎使用

2.1 檢查 Hermes 引擎是否啟用

如果我們創(chuàng)建了一個新的React Native應用程序,想要在應用中查看是否啟用Hermes,那么可以使用下面的方式。

const isHermes = () => !!global.HermesInternal;

想要體驗開啟Hermes帶來的好處,可以嘗試重新運行項目來進行對比。

npx react-native run-android --variant release
npx react-native run-ios --configuration Release

2.2 綁定Hermes

從React Native 0.69開始,每個版本的React Native都會綁定一個Hermes版本。每當我們發(fā)布React Native的新版本時,官方都會為開發(fā)者構(gòu)建一個Hermes的版本,目的是確保使用的Hermes版本與React Native版本的完全兼容。

這是因為,從歷史上版本來看,我們在匹配Hermes的版本和React Native的版本時遇到過兼容性問題。為了完全消除這類問題,我們?yōu)殚_發(fā)者提供了一個與特定React Native版本兼容的JS引擎。

同時,這些更改對React Native開發(fā)者是完全透明的,您仍然可以根據(jù)配置來啟用/禁用Hermes引擎。

2.3 使用DevTools在Hermes上調(diào)試JS

Hermes通過實現(xiàn)Chrome檢查器協(xié)議來支持Chrome調(diào)試器,這意味著,我們可以直接使用Chrome的DevTools工具來直接調(diào)試運行JavaScript代碼。

  同時,Chrome通過Metro連接運行在設備上的Hermes,所以我們需要知道Metro監(jiān)聽的端口。通常,默認的監(jiān)聽地址是localhost:8081,不過這都是可以配置的。當運行yarn啟動時,該地址在啟動時被寫入stdout。

  一旦我們知道了Metro服務器監(jiān)聽的端口,接下來就可以使用以下步驟連接Chrome:

  • 在Chrome瀏覽器中輸入chrome://inspect。
  • 然后在Chrome瀏覽器中輸入localhost:8081開啟調(diào)試。

現(xiàn)在,會看到一個帶有“inspect”鏈接的“Hermes React Native”目標,可以用來調(diào)出調(diào)試器;如果沒有看到“inspect”鏈接,請確保Metro服務器正在運行。

現(xiàn)在,我們就可以使用Chrome調(diào)試工具進行代碼調(diào)試了,如下圖所示。

以上就是詳解React Native項目中啟用Hermes引擎的詳細內(nèi)容,更多關(guān)于React Native啟用Hermes引擎的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 在React中正確處理異步操作的方法

    在React中正確處理異步操作的方法

    本文全面介紹了在React中處理異步操作的方法、最佳實踐及常見坑點,涵蓋數(shù)據(jù)獲取、延時任務、用戶交互、動畫和效果等典型場景,并提供了如useEffect、AbortController、ReactQuery等具體實現(xiàn)示例,感興趣的朋友一起看看吧
    2025-03-03
  • react-native 實現(xiàn)漸變色背景過程

    react-native 實現(xiàn)漸變色背景過程

    這篇文章主要介紹了react-native 實現(xiàn)漸變色背景過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Next.js實現(xiàn)react服務器端渲染的方法示例

    Next.js實現(xiàn)react服務器端渲染的方法示例

    這篇文章主要介紹了Next.js實現(xiàn)react服務器端渲染的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 詳解在React項目中安裝并使用Less(用法總結(jié))

    詳解在React項目中安裝并使用Less(用法總結(jié))

    這篇文章主要介紹了詳解在React項目中安裝并使用Less(用法總結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • 一個基于react的圖片裁剪組件示例

    一個基于react的圖片裁剪組件示例

    本篇文章主要介紹了一個基于react的圖片裁剪組件示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • es6在react中的應用代碼解析

    es6在react中的應用代碼解析

    這篇文章主要介紹了es6在react中的應用代碼解析,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-11-11
  • React結(jié)合Drag?API實現(xiàn)拖拽示例詳解

    React結(jié)合Drag?API實現(xiàn)拖拽示例詳解

    這篇文章主要為大家介紹了React結(jié)合Drag?API實現(xiàn)拖拽示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • react-router?重新加回跳轉(zhuǎn)攔截功能詳解

    react-router?重新加回跳轉(zhuǎn)攔截功能詳解

    這篇文章主要為大家介紹了react-router?重新加回跳轉(zhuǎn)攔截功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • 詳解如何優(yōu)雅地在React項目中使用Redux

    詳解如何優(yōu)雅地在React項目中使用Redux

    這篇文章主要介紹了詳解如何優(yōu)雅地在React項目中使用Redux,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • antd之RangePicker設置默認值方式

    antd之RangePicker設置默認值方式

    這篇文章主要介紹了antd之RangePicker設置默認值方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論

离岛区| 韩城市| 芦溪县| 涞水县| 菏泽市| 天门市| 建德市| 武宣县| 临汾市| 定陶县| 左云县| 江永县| 鄢陵县| 益阳市| 黄石市| 南靖县| 文登市| 台州市| 鸡泽县| 神木县| 邳州市| 黄陵县| 武宁县| 长葛市| 敦煌市| 竹溪县| 东至县| 阳江市| 安龙县| 原阳县| 虹口区| 屏山县| 色达县| 铅山县| 东兰县| 武功县| 桦南县| 瑞金市| 阿巴嘎旗| 金昌市| 高尔夫|