Taro打包Android?apk過程詳解
首先,我們使用使用命令創(chuàng)建模板項目,創(chuàng)建的命令如下。
taro init myApp
然后,使用 yarn 或者 npm install安裝依賴包,并使用下面的命令編譯Taro項目。
yarn dev:rn
啟動后會開啟一個監(jiān)聽的進程。
不過,細心的你可能會發(fā)現(xiàn),使用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 已修復(fù)。
修改后,重新執(zhí)行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的密鑰文件,關(guān)于如何生成密鑰文件,可以自行查找相關(guān)的資料,把生成的密鑰文件拷貝到工程中的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文件復(fù)制到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"
]然后,執(zhí)行如下命令執(zhí)行生成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的根目錄下執(zhí)行打包命令。
./gradlew assembleRelease
打包完成后,就可以在android/app/build/outputs中看到簽名包。
以上就是Taro打包Android apk過程詳解的詳細內(nèi)容,更多關(guān)于Taro打包Android apk的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android實現(xiàn)調(diào)用攝像頭拍照并存儲照片
本文主要介紹了如何利用Android調(diào)用攝像頭拍照,并顯示拍照后的圖片到ImageView中,文中的示例代碼講解詳細,感興趣的可以動手試一試2022-01-01
Android開發(fā)中TextView各種常見使用方法小結(jié)
這篇文章主要介紹了Android開發(fā)中TextView各種常見使用方法,結(jié)合實例形式總結(jié)分析了Android開發(fā)中TextView各種常見布局與功能實現(xiàn)技巧,需要的朋友可以參考下2019-04-04
Flutter學(xué)習(xí)之構(gòu)建、布局及繪制三部曲
這篇文章主要給大家介紹了關(guān)于Flutter學(xué)習(xí)之構(gòu)建、布局及繪制三部曲的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Flutter具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04

