React Native Mac 下打包Android APK
打包的时候遇到了 好多坑 这里记录下~
主要步骤:
1.android keystore签名的生成
- gradle mac下环境变量的配置
3.android studio中的gradle配置。
4.打包
签名的生成
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
“my-release-key.keystore“ 签名的名称
“my-key-alias ” 签名别名
有效期为10000天
mac 下 打开终端
$ cd ~
$ sudo keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
执行完之后,输入本机的 权限密码 然后 输入秘钥密码 一般为:至少必须为 6 个字符
接下来就是一些信息 可填可不填
这里按下回车 别名 和 秘钥名一致 回车
把生成的keystore 文件 放在 android 工程 app目录下 ,我这里新建了一个文件夹
之后就是按照官网文档 配置 android gradle文件:
在android/app/build.gradle,添加如下的签名配置
这里没有用全局 你也可以像官网这样
defaultConfig { ... }
signingConfigs {
release {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}
}
然后再package.json 文件中 添加 如下脚本
进入 android目录下 执行 ./gradlew assembleRelease
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"build_android": "cd android && ./gradlew assembleRelease",
},
这样在每次 打包的时候可以 在终端 执行
$ npm run build_android
注意:这个./不可省略;而在windows的传统CMD命令行下则需要去掉./ (别忘记)
到这里基本上是结束了,我也想一帆风顺,但是坑还是有的
在执行 npm run build_android的时候 报错
这里环境变量的配置参考了 这篇博文 讲的很详细 https://blog.csdn.net/u013424496/article/details/52684213
gradle command not found 这个错误一般是 gradle环境变量没有配置
如何配置gradle 环境变量
cd ~
touch .bash_profile
open -e .bash_profile
这里如果打开.bash_profile 文件没有权限的话,可以按照博文中提到的那样做,
也可以 执行下面命令
sudo vim .bash_profile
输入e 进行编辑
输入 i 进入编辑模式 ,完成后 esc 然后:wq保存并退出。
完成之后 ,更新生效 .bash_profile
source .bash_profile
gradle -v
没生效的话,重新打开终端
到这里就结束了吗?哪有那么简单哦?坑是填不完的。。。
what?什么鬼啊 还有这错误?
如果你们也遇到这个错误:
XXXXnode_modules/node-pre-grp/node_modules/.bin/detect-libc
好吧 ,建议 卸载 node_modules 然后再重新npm install
不想卸 也没办法,我也不想卸啊 ,改了一部分依赖源码........(脑壳青痛)
卸载的话, 安装这个 npm install rimraf --g
然后执行:npm install rimraf -g && npm install
生成的apk 在 /android/app/build/outputs 目录下 然后 查看apk大小
what?快30M了 什么鬼啊,
看了下图片 : 2.9M
代码:1.3M 依赖的包也不多啊,为什么打出来这么大啊? 有知道的小伙伴求告知!
android 比 ios打出来的包大是肯定的 因为:
安卓ReactNative虽然使用了JSCore,但这个JSCore不是系统源生的,而是直接打入app包里的WebKit库,这也是为啥安卓项目引入RN包大小会增大4~5M的原因,ReactNative在iOS上JSCore是系统自带的,完全可以不用打入app包内,所以iOS的包大小,引入RN后变化并没有那么夸张。
关注我的公众号,我可以不定时骚扰大家~

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
约束布局(ConstraintLayout)1.1.2 版本的新特性
ConstraintLayout 是目前 Android Studio 中项目的默认布局,目前已经到了 1.1.2 版本,这里就来介绍下它在新版本中的特性,如果你目前还没有使用过 ConstraintLayout ,可以看下我写的另一篇文章:Android ConstraintLayout 使用详解 一、Circular Positioning 圆形定位用于将两个 View 以角度和距离这两个维度来进行定位,以两个 View 的中心点作为定位点 app:layout_constraintCircle -目标 View 的 ID app:layout_constraintCircleAngle -对齐的角度 app:layout_constraintCircleRadius -与目标 View 之间的距离(顺时针方向,0~360度) <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.andro...
-
下一篇
retrofit网络请求入门(多实例讲解)
之前就想抽空写一篇关于retrofit的博客,今天终于有空啦= =,话不多说。上博。 一.相关资料: Github:http://github.com/square/retrofit 官网文档:http://square.github.io/retrofit/ 相关博客:Retrofit2.0通俗易懂的学习姿势,Retrofit2.0 + OkHttp3 + Gson + RxJava 这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解) 二.:模拟实现的请求以及retrofit实现步骤 本次主要使用retrofit模拟实现 1.正常get请求 2.拼接get请求(单个参数) 3.拼接get请求(多个参数) 4.get占位符请求 5.post请求 概览.JPG retrofit实现步骤: 步骤1:添加Retrofit库的依赖 步骤2:创建 接收服务器返回数据 的类 步骤3:创建 用于描述网络请求 的接口 步骤4:创建 Retrofit 实例 步骤5:创建 网络请求接口实例 并 配置网络请求参数 步骤6:发送网络请求(异步 / 同步) 步骤7: 处理服务器返回的数据 步骤讲...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- MySQL数据库在高并发下的优化方案
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8编译安装MySQL8.0.19