乐趣区

关于taro:Taro打包Android-apk

首先,咱们应用应用命令创立模板我的项目,创立的命令如下。

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)

在网上找了下,找到如下一篇帖子:taro-native-shell 壳子,android studio 启动报错。
下面报错的意思是找不到 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 中看到签名包。

退出移动版