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 打包的更多相关文章

  1. 【React Native 实战】二维码扫描

    1.前言今天介绍React Native来实现二维码扫描的功能.首先我们要借助第三方插件react-native-barcode-scanner-universal来实现跨平台二维码扫描. 2.介绍 ...

  2. React Native组件解析(二)之Text

    React Native组件解析(二)之Text 1. 概述 Text组件对应于iOS的UILabel,Android的TextView,用来显示文本.但是Text组件的内部使用的并不是flexbox ...

  3. 使用React Native来撰写跨平台的App

    React Native 是一个 JavaScript 的框架,用来撰写实时的.可原生呈现 iOS 和 Android 的应用.其是基于 React的,而 React 是 Facebook 的用于构建 ...

  4. React Native之APK文件签名及打包

    生成apk签名文件 我们使用android studio的方式进行签名 AS工具栏找到并点击 build->gennrate signed apk 两种情况: 1.这里如果已经有签名文件了则直接 ...

  5. React Native学习(二)—— 开始一个项目

    本文基于React Native 0.52 一.创建一个项目 1.初始化一个RN项目 react-native init RNDemo 2.连接一个设备或是打开模拟器 可以通过 adb devices ...

  6. React Native实例之房产搜索APP

    React Native 开发越来越火了,web app也是未来的潮流, 现在react native已经可以完成一些最基本的功能. 通过开发一些简单的应用, 可以更加熟练的掌握 RN 的知识. 在学 ...

  7. NodeJS笔记(五) 使用React Native 创建第一个 Android APP

    参考:原文地址 几个月前官方推出了快速创建工具包,由于对React Native不熟悉这里直接使用这2个工具包进行创建 1. create-react-native-app(下文简称CRNA): 2. ...

  8. React Native组件(二)View组件解析

    相关文章 React Native探索系列 React Native组件系列 前言 了解了RN的组件的生命周期后,我们接着来学习RN的具体的组件.View组件是最基本的组件,也是首先要掌握的组件,这一 ...

  9. React文档(二十一)协调

    React提供了一个声明式地API因此你不用担心每一次更新什么东西改变了.这使得开发应用变得简单,但是这个东西在React中如何实现的并不是很明显.这篇文章会解释我们在React的算法中所做的选择以便 ...

  10. React Native指南汇集了各类react-native学习资源、开源App和组件

    来自:https://github.com/ele828/react-native-guide React Native指南汇集了各类react-native学习资源.开源App和组件 React-N ...

随机推荐

  1. QT linux下显示中文的问题

    如果中文显示为乱码,那么是字符集不对. 应该设置字符集: QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK") ...

  2. win10上安装redis

    1.下载安装包: 下载地址: 链接:https://pan.baidu.com/s/1oGPrfQJvFz-fX_KNcTTNUw 提取码:eake 2.在适合的位置创建一个文件夹,并将下载到的压缩包 ...

  3. [LeetCode] 154. 寻找旋转排序数组中的最小值 II

    题目链接 : https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array-ii/ 题目描述: 假设按照升序排序的数组在预 ...

  4. Python 入门之 文件

    Python 入门之 文件 1.文件操作 找到文件位置 双击打开 进行一些操作 r-read(读) w-write(写) a-追加 rd--读字节 wd--清空写,写字节 ad --追加写(字节) r ...

  5. HNUSTOJ-1695 跳格子(略感头疼)

    1695: 跳格子 时间限制: 1 Sec  内存限制: 128 MB提交: 230  解决: 57[提交][状态][讨论版] 题目描述 逸夫楼的大厅的地面有10行10列的石砖,我们用坐标(x,y)来 ...

  6. [pwnable.kr] - wtf

    Q: I don't understand why my exploit is not working. I need your help. download : http://pwnable.kr/ ...

  7. PCIe事务层の详解(一)

    PCIe总线的通信机制:当一个设备要想另一个设备进行读取通信时,请求方requester需要向另一个设备发送请求request,靶向方作为事件完成方completer,以complete Packet ...

  8. 【问题解决方案】visudo: /etc/sudoers is busy, try again later

    参考链接: 博客园:visudo: /etc/sudoers is busy, try again later CSDN:Shell 获取进程号并杀掉该进程 注:找到几篇相同的参考内容,都是只有查看进 ...

  9. HTML面试问题收集(1)

    1.浏览器页面有哪三层构成,分别是什么,作用是什么? 构成:结构层.表示层.行为层分别是:HTML.CSS.JavaScript 作用:HTML实现页面结构,CSS完成页面的表现与风格,JavaScr ...

  10. MongoDB的使用学习之(五)Spring集成MongoDB以及简单的CRUD

    这篇文章不错:Spring Data - MongoDB 教程 (1.0.0.M1)http://miller-cn.iteye.com/blog/1258859 1.介绍 之前在很多地方一直见到这个 ...