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. while与格式化的练习

    练习 判断下列逻辑语句的结果,一定要自己先分析 1)1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 2)n ...

  2. zprofiler工具

    转自:zprofiler三板斧解决cpu占用率过高问题 此工具为阿里自产的profiler工具,在其他文章中看到有用此工具进行性能问题定位的.在此转载文章学习一下. 上周五碰到了一个线上机器cpu占用 ...

  3. 基于spring boot2.0+spring security +oauth2.0+ jwt微服务架构

    github地址:https://github.com/hankuikuide/microservice-spring-security-oauth2 项目介绍 该项目是一个演示项目,主要演示了,基于 ...

  4. Python multiprocessing使用详解

    multiprocessing包是Python中的多进程管理包. 与threading.Thread类似,它可以利用multiprocessing.Process对象来创建一个进程. 该进程可以运行在 ...

  5. wpf textbox ctrl+enter事件

    <TextBox x:Name="xcontent" Text="sfasdf" Grid.Row="0" AcceptsReturn ...

  6. MATLAB的边缘检测函数中隐含的细化(非极大值抑制)算法

    前段时间做了一个车牌检测识别的项目,我的任务是将MATLAB中的算法移植成C++代码.在车牌区域提取的过程中,用到了水平方向的Sobel算子检测垂直边缘,一开始我直接把MATLAB中的 bw = ed ...

  7. Ubuntu 16.04安装N卡驱动、cuda、cudnn和tensorflow GPU版

    安装驱动 最开始在英伟达官网下载了官方驱动,安装之后无法登录系统,在登录界面反复循环,用cuda里的驱动也出现了同样的问题.最后解决办法是把驱动卸载之后,通过命令行在线安装驱动. 卸载驱动: sudo ...

  8. centos 7 安装相关环境

    How To Create a Sudo User on CentOS 7 https://www.digitalocean.com/community/tutorials/how-to-create ...

  9. Linux 安装 Composer

    Linux 安装 Composer  入门 练习环境: 虚拟机:Oracle VM VirtualBox. 系统:CentOS 7. 安装方式一: 参考网址:https://learnku.com/c ...

  10. linux中未实现的系统调用

    afs_syscall, break, fattach, fdetach, ftime, getmsg, getpmsg, gtty, isastream, lock, madvise1, mpx, ...