React-Native 之 GD (二十一)APP 打包
1.生成一个签名密钥:
在 /android/app 下运行

说明:keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
注:my-release-key是文件名,my-key-alias是别名。
例如:
keytool -genkey -v -keystore GD.keystore -alias GD -keyalg RSA -keysize 2048 -validity 10000
最后会生成一个my-release-key.keystore的密钥库文件。
2.找到路径/android/app/src/main,并在该目录下新建assets文件夹(这个文件夹名字是固定的不能改)

3. 在工程目录下执行以下命令,目的是将 index.android.bundle下载并保存到assets资源文件夹中
第一个终端:执行
react-native start
第二个终端:执行
curl -k "http://localhost:8081/index.android.bundle" > android/app/src/main/assets/index.android.bundle
结果:


4.添加gradle的android keystore配置(打包的apk在未签名的情况下,在手机中(非root)是不允许安装的)
android/gradle.properties
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=123456
MYAPP_RELEASE_KEY_PASSWORD=123456

在android/app/build.gradle文件中添加以下代码
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 {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
signingConfig signingConfigs.release //添加这句话引用签名配置
}
}
5. 启用Proguard代码混淆来缩小APK文件的大小(保护源代码,缩小APK包)
Proguard是一个Java字节码混淆压缩工具,它可以移除掉React Native Java (和它的依赖库中)中没有被使用到的部分,最终有效的减少APK的大小。
重要:每次启用Proguard之后,必须再次全面地测试你的应用。Proguard有时候需要为你引入的每个原生库做一些额外的配置。参见app/proguard-rules.pro文件。
在android/app/build.gradle文件中(第4步的文件),找到enableProguardInReleaseBuilds然后修改def enableProguardInReleaseBuilds = true

6. 在/android/目录中执行
gradle assembleRelease
命令,打包后的文件在android/app/build/outputs/apk目录中,例如app-release.apk。

如果打包碰到问题可以先执行gradle clean 清理一下。
安装gradle工具(版本与android\gradle\wrapper下的一致),并配置环境变量:添加环境变量GRADLE_HOME,值是grandle的根目录;然后把%GRADLE_HOME%/bin加到Path环境变量。
步骤一:检查是否安装 gradle

步骤二:查看本地 版本号

步骤三:下载 zip 包,版本 为 gradle-2.14.1-all
http://services.gradle.org/distributions/
步骤四:环境变量配置:
GRADLE_HOME ---------- D:\gradle-2.14.1
PATH -------------- ;%GRADLE_HOME%\bin
步骤五:配置完成后运行 gradle -v 检查是否安装成功

7.BUILD SUCCESSFUL 发布apk到应用市场
React-Native 之 GD (二十一)APP 打包的更多相关文章
- 【React Native 实战】二维码扫描
1.前言今天介绍React Native来实现二维码扫描的功能.首先我们要借助第三方插件react-native-barcode-scanner-universal来实现跨平台二维码扫描. 2.介绍 ...
- React Native组件解析(二)之Text
React Native组件解析(二)之Text 1. 概述 Text组件对应于iOS的UILabel,Android的TextView,用来显示文本.但是Text组件的内部使用的并不是flexbox ...
- 使用React Native来撰写跨平台的App
React Native 是一个 JavaScript 的框架,用来撰写实时的.可原生呈现 iOS 和 Android 的应用.其是基于 React的,而 React 是 Facebook 的用于构建 ...
- React Native之APK文件签名及打包
生成apk签名文件 我们使用android studio的方式进行签名 AS工具栏找到并点击 build->gennrate signed apk 两种情况: 1.这里如果已经有签名文件了则直接 ...
- React Native学习(二)—— 开始一个项目
本文基于React Native 0.52 一.创建一个项目 1.初始化一个RN项目 react-native init RNDemo 2.连接一个设备或是打开模拟器 可以通过 adb devices ...
- React Native实例之房产搜索APP
React Native 开发越来越火了,web app也是未来的潮流, 现在react native已经可以完成一些最基本的功能. 通过开发一些简单的应用, 可以更加熟练的掌握 RN 的知识. 在学 ...
- NodeJS笔记(五) 使用React Native 创建第一个 Android APP
参考:原文地址 几个月前官方推出了快速创建工具包,由于对React Native不熟悉这里直接使用这2个工具包进行创建 1. create-react-native-app(下文简称CRNA): 2. ...
- React Native组件(二)View组件解析
相关文章 React Native探索系列 React Native组件系列 前言 了解了RN的组件的生命周期后,我们接着来学习RN的具体的组件.View组件是最基本的组件,也是首先要掌握的组件,这一 ...
- React文档(二十一)协调
React提供了一个声明式地API因此你不用担心每一次更新什么东西改变了.这使得开发应用变得简单,但是这个东西在React中如何实现的并不是很明显.这篇文章会解释我们在React的算法中所做的选择以便 ...
- React Native指南汇集了各类react-native学习资源、开源App和组件
来自:https://github.com/ele828/react-native-guide React Native指南汇集了各类react-native学习资源.开源App和组件 React-N ...
随机推荐
- poj-1236.network of schools(强连通分量 + 图的入度出度)
Network of Schools Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 27121 Accepted: 10 ...
- java常用类之BigDecimal
BigDecimal 小数计算丢失精度问题 在计算机中,所有文件都是以二进制存储的,数字运算也是使用二进制进行计算的,因为计算机中不存在小数点,所以我们通常说的浮点数如float.double都是计算 ...
- [BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩)
[BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩) 题面 给出一棵树和一个图,点数均为n,问有多少种方法把树的节点标号,使得对于树上的任意两个节点u,v,若树上u ...
- ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;
参考来源:https://blog.csdn.net/yuxinha11/article/details/80090197 ENGINE=InnoDB不是默认就是这个引擎吗?——是的,如果不写也是ok ...
- Slim Span (最小生成树)
题意 求生成树的最长边与最短边的差值的最小值 题解 最小生成树保证每一条边最小,就只要枚举最小边开始,跑最小生成树,最后一个值便是最大值 在枚举最小边同时维护差值最小,不断更新最小值. C++代码 / ...
- 攻防世界--CGfsb238
测试文件:https://adworld.xctf.org.cn/media/task/attachments/5982010c172744c8a1c93c24b5200b21 1.格式化字符串漏洞 ...
- MAC设置环境变量
1. Mac 启动加载文件位置(可设置环境变量) ------------------------------------------------------- (1)首先要知道你使用的Mac OS ...
- MapReduce单机提交(待稿)
MR 提交方式源码 提交方式: 1,开发-> jar -> 上传到集群中的某一个节点 -> hadoop jar ooxx.jar ooxx in out 2,嵌入[linux,wi ...
- 07java进阶——集合框架(set)
1.list接口中常用的特有方法 package cn.jxufe.java.chapter7; import java.util.ArrayList; import java.util.List; ...
- 每日一蠢 .kettle 下的kettle.properties文件内配置的内容不能被识别
昨天装封装好的ETL 工具 窝将环境变量中的KETTLE_HOME删除了, 结果 .kettle 下的kettle.properties文件内配置的内容不能被识别 can't parse argum ...