欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Taro打包Android apk过程详解

程序员文章站 2021-12-03 08:59:46
首先,我们使用使用命令创建模板项目,创建的命令如下。taro init myapp然后,使用 yarn 或者 npm install安装依赖包,并使用下面的命令编译taro项目。yarn dev:rn...

首先,我们使用使用命令创建模板项目,创建的命令如下。

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中看到签名包。

以上就是taro打包android apk过程详解的详细内容,更多关于taro打包android apk的资料请关注其它相关文章!