91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

React?Native怎么采用Hermes熱更新打包

發布時間:2022-05-19 09:19:37 來源:億速云 閱讀:664 作者:iii 欄目:開發技術

這篇文章主要介紹“React Native怎么采用Hermes熱更新打包”,在日常操作中,相信很多人在React Native怎么采用Hermes熱更新打包問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”React Native怎么采用Hermes熱更新打包”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

1, 背景

如果我們打開RN的Android源碼,在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 是專門針對 React Native 應用而優化的全新開源 JavaScript 引擎。對于很多應用來說,啟用 Hermes 引擎可以優化啟動時間,減少內存占用以及空間占用。

2,熱更新傳統方案

在傳統的熱更新方案中,我們實現熱更新需要借助code-push開源方案,熱更新包的發布有兩種方式:

  • code-push release-react:打bundle并自動上傳

  • code-push release:需先打bundle,再通過該命令上傳

如果采用code-push release-reactapp熱更新后,殺掉進程重新進入,app首屏加載的時候速度會很慢,甚至可能出現白屏。這是因為生成的bundle只是通過babel編譯轉碼,然后經過js壓縮和削減,代碼的執行效率并不高。

React?Native怎么采用Hermes熱更新打包

而開啟Hermes引擎后,可以執行純文本的 JS 代碼,效率比替換js引擎前更低,執行效率也更高。

3,使用Hermes打包

首先,我們執行react-native bundle命令進行打包,比如。

react-native bundle --platform android --entry-file index.android.js --bundle-output ./bundles/index.android.bundle --assets-dest ./bundles --dev false

接下來,我們需要將bundle轉成字節碼。轉化前,我們需要先下載hermes-engine。

npm i hermes-engine

接著,執行如下命令將bundle轉換成字節碼

 cd node_modules/hermes-engine/oxs-bin
 ./hermesc -emit-binary -out index.android.bundle.hbc /Users/xxxx/work/react-native/app/bundles/index.android.bundle

將之前bundle目錄下的index.android.bundle刪掉,將當前的index.android.bundle.hbc重命名為index.android.bundle,再移動到之前bundle目錄下。最后,使用下面的命令執行 bundle熱更新包的發布。

code-push release AndroidAppNamexx ./bundles 1.0.0 --d Staging --des "描述" --m true

使用這種方式后,下次有熱更新的時候,加載的速度比之前也有明顯的提升,特別是bundle包內容比較大的時候。

到此,關于“React Native怎么采用Hermes熱更新打包”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

庄河市| 浦县| 南宁市| 张家川| 尖扎县| 齐齐哈尔市| 高州市| 黄石市| 恩施市| 金乡县| 新田县| 惠安县| 尼勒克县| 改则县| 淮阳县| 柏乡县| 萨嘎县| 南昌县| 双桥区| 富蕴县| 辽宁省| 开封市| 南溪县| 涞水县| 缙云县| 延吉市| 昌都县| 札达县| 和静县| 克拉玛依市| 马公市| 江达县| 汶川县| 咸丰县| 朝阳县| 读书| 措美县| 蓬溪县| 集安市| 曲周县| 东莞市|