Taro打包Android apk过程详解
作者:厦门在乎科技 发布时间:2022-01-31 02:55:27
首先,我们使用使用命令创建模板项目,创建的命令如下。
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
猜你喜欢
- 在这篇文章中,我将向您展示如何用新的Java 8 forEach语句循环一个List和Map。1、forEach 和 Map1.1、常规循环
- 本文实例讲述了Java二叉搜索树基础原理与实现方法。分享给大家供大家参考,具体如下:前言:本文通过先通过了解一些二叉树基础知识,然后在转向学
- /** 保存方法 */ public void saveBitmap() { Log.e(TAG, "保存图片"); F
- Linux下的五种I/O模型1)阻塞I/O(blocking I/O)2)非阻塞I/O (nonblocking I/O)3) I/O复用(
- spring @Autowired注解无法注入问题简述在使用spring框架的过程中,常会遇到这种两情况:1、在扫描的包以外使用需要使用ma
- 1、找奇数:public static boolean isOdd(int i){ return i % 2 == 1; }上面的方法真
- 1.类加载<1>.父子类执行的顺序1.父类的静态变量和静态代码块(书写顺序)2.子类的静态变量和静态代码块(书写顺序)3.父类的
- 通过shift+shift可以调出搜索窗口或者ctrl+n但是,如果想搜索jdk中的类,只是在搜索栏中是无法搜出来的需要勾选 红框内的选项没
- 右击有main方法的类===> Run as===> Run Configurations ===>双击java
- 利用 Spring 工厂加载机制,实例化 ApplicationListener 实现类,并排序对象集合创建应用事件 * 创建类实现接口Ap
- IDEA快速搭建spring boot项目1.创建项目老规矩,点击Create New Project2.编写控制器在com.demo.sp
- 条码的应用已深入生活和工作的方方面面。在处理条码时,常需要和各种文档格式相结合。当需要在文档中插入、编辑或者删除条码时,可借助于一些专业的类
- 1、JDK1.8之前:假设有实体类User,里面有字段id,我们将相同id的User进行分组,并存放在Map中。(例子不是很恰当,但很能说明
- 这篇文章主要介绍了springmvc如何使用POJO作为参数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 实例如下所示:public class MainActivity {private static final String fileName
- 问题描述fastjson通过代码指定全局序列化返回时间格式,导致使用JSONField注解标注属性的特殊日期返回格式失效使用版本应用名称版本
- 本文实例讲述了Java实现的质因数分解操作。分享给大家供大家参考,具体如下:这里演示java通过递归实现质因数分解,代码如下:import
- 1. 最小生成树连通图中的每一棵生成树 , 都是原图的极大无环子图 , 即: 从中删去任何一条边 , 生成树就不再连通;反之 , 在其中引入
- spring boot RestTemplate 发送get请求踩坑闲话少说,代码说话RestTemplate 实例手动实例化,这个我基本不
- 项目背景在做项目的时候,把SpringBoot的项目打包成安装包了,在客户上面安装运行,一切都是那么的完美,可是发生了意外,对方突然说导出导