網站首頁 編程語言 正文
首先,我們使用使用命令創建模板項目,創建的命令如下。
taro init myApp
然后,使用 yarn 或者 npm install安裝依賴包,并使用下面的命令編譯Taro項目。
yarn dev:rn
啟動后會開啟一個監聽的進程。
不過,細心的你可能會發現,使用taro init命令初始化的項目是沒有原生模塊支持的,原來Taro使用了一個殼子工程,首先使用下面的命令下載殼子工程taro-native-shell,如下所示。
git clone git@github.com:NervJS/taro-native-shell.git
在taro-native-shell個目錄使用 yarn 或者 npm install 安裝依賴,并使用下面的命令啟動殼子工程。
react-native run-android
不過,啟動后報了如下的錯誤:
error: bundling failed: NotFoundError: Cannot find entry file index.js in any of the roots: ["/Users/mac/Taro/work/taro-yanxuan"] at DependencyGraph.getAbsolutePath (/Users/mac/Taro/work/taro-yanxuan/node_modules/metro/src/node-haste/DependencyGraph.js:317:11) at /Users/mac/Taro/work/taro-yanxuan/node_modules/metro/src/DeltaBundler/DeltaCalculator.js:280:416 at Generator.next (<anonymous>) at step (/Users/mac/Taro/work/taro-yanxuan/node_modules/metro/src/DeltaBundler/DeltaCalculator.js:11:445) at /Users/mac/Taro/work/taro-yanxuan/node_modules/metro/src/DeltaBundler/DeltaCalculator.js:11:605 at processTicksAndRejections (internal/process/task_queues.js:97:5)
上面報錯的意思是找不到RN的入口文件index.js。對于這個問題,只需要將 MainApplication.java 里面的 getJSMainModuleName 修改改為:
rn_temp/index
即可,因為Taro打的包在rn_temp目錄下,最新的 react-native-shell 已修復。
修改后,重新執行react-native run-android命令。
不過,由于項目是0.60.0版本以下的,所以我在運行的時候又報了下面的錯誤。
React Native version mismatch javascript version 0.55.4 Native version 0.64.0
這是因為react-native-shell 是0.64.0,而我的RN項目是0.55.4,所以只能升級RN項目或者降級
react-native-shell 。如果沒有任何錯誤,接下來就可以制作離線的apk包了。
首先,你需要生成Android的密鑰文件,關于如何生成密鑰文件,可以自行查找相關的資料,把生成的密鑰文件拷貝到工程中的android/app文件夾中。然后,在在/android/gradle.properties中添加如下常量代碼。
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore MYAPP_RELEASE_KEY_ALIAS=my-key-alias MYAPP_RELEASE_STORE_PASSWORD=***** MYAPP_RELEASE_KEY_PASSWORD=*****
然后,在app/build.gradle文件中添加如下代碼。
release { if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) { storeFile file(MYAPP_UPLOAD_STORE_FILE) storePassword MYAPP_UPLOAD_STORE_PASSWORD keyAlias MYAPP_UPLOAD_KEY_ALIAS keyPassword MYAPP_UPLOAD_KEY_PASSWORD } }
接下來,把前面生成的rn_temp文件復制到taro-native-shell殼子工程的android文件夾下,修改MainApplication里面的代碼,如下所示。
@Override protected String getBundleAssetName() { return "./android/rn_temp/index"; } };
然后,在android/app/build.gradle中修改添加如下代碼。
project.ext.react = [ entryFile: "android/rn_temp/index.js", cliPath:"node_modules/react-native/cli.js" ]
然后,執行如下命令執行生成index.bundle 文件,如下所示。
node ./node_modules/react-native/local-cli/cli.js bundle --entry-file ./android/rn_temp/index.js --bundle-output ./android/rn_temp/index.bundle --assets-dest ./rn_bundle --dev false
最后,在Android的根目錄下執行打包命令。
./gradlew assembleRelease
打包完成后,就可以在android/app/build/outputs中看到簽名包。
原文鏈接:https://blog.csdn.net/weixin_41996102/article/details/119868143
- 上一篇:Qt實現實時鼠標繪制圖形_C 語言
- 下一篇:C++制作簡單的計算器功能_C 語言
相關推薦
- 2022-04-22 mac安裝oh-my-zsh出現command not found: npm問題解決
- 2022-07-06 ?ASP.NET?Core?模型驗證過濾器的兩種實現方法_實用技巧
- 2022-06-12 python下grpc與protobuf的編寫使用示例_python
- 2022-06-06 Array.prototype.myfindIndex
- 2022-12-28 Python?PyQt5中窗口數據傳遞的示例詳解_python
- 2022-06-08 ASP.NET?Core中的靜態文件_基礎應用
- 2022-03-26 C++中靜態數據成員使用示例_C 語言
- 2022-08-05 C++詳細講解模擬實現位圖和布隆過濾器的方法_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支