博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React Native for Android 发布独立的安装包
阅读量:4083 次
发布时间:2019-05-25

本文共 3142 字,大约阅读时间需要 10 分钟。

翻译地址 : 

官方发布的生成签名APK的方法,出于对 Native的热爱,对此篇内容进行了翻译,在翻译的过程中会添加一些自己的理解,生成签名APK是使用开发线上应用,必不可少的步骤。

如果你想发布自己的应该到各种市场或渠道,你需要生成一个被签名的release APK,在 Developers 文档中Signing Your Application 这个主题有详细的描述。这个主题中涉及到了一小部分的签名应用的内容,同时罗列了需要打包 bundle的步骤。

生成一个签名秘钥

使用keytool生成一个私有的签名秘钥

$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000 
1
1

命令会提示你给keystore和key设置密码,并提供专有名称字段的Key。最后会生成名字为my-release-key.keystore的keystore。

生成的keystore包含一个单独的key,有效期是10000天。要注意记住这个别名,稍后会使用这个别名来签名你的app。

切记:保持你的秘钥文件私有,不要提交到里。

设置全局gradle参数

  1. 把 my-release-key.keystore 文件复制到你项目的 android/app目录下。
  2. 编辑 ~/.gradle/gradle.properties文件,添加下面代码(使用秘钥密码 keystore password,别名 alias,key password替换** 部分)
MYAPP_RELEASE_STORE_FILE=my-release-key.keystoreMYAPP_RELEASE_KEY_ALIAS=my-key-aliasMYAPP_RELEASE_STORE_PASSWORD=*****MYAPP_RELEASE_KEY_PASSWORD=***** 
1
2
3
4
1
2
3
4

这些都是我们在签名时即将用到的全局变量。

切记: 一旦你在应用商店发布了应用,如果你想更改签名秘钥的话,就需要更改包名重新发布应用,这将会失去所有的下载量和点击率。所有备份好你的秘钥并且不要忘记密码。

在app目录下的的gradle配置中添加签名配置

编辑项目文件夹下 android/app/build.gradle文件,增加签名配置。

...android {    ...    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        }    }}... 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

生成release Apk 
在终端上运行下面的命令

$ cd android && ./gradlew assembleRelease 
1
1

Gradle的 assembleRelease 能够将运行你的app所需要的所有JavaScript绑定到Apk中,如果你想改变JavaScript或者drawable资源被捆绑的方式,你可以查看 android/app/build.gradle 文件,了解如何改变以及如何体现这些改变。

注: gradlew命令在使用时,必须添加./,否则有可能遇到command not found: gradlew问题,因为gradlew不属于全局命令,添加./表示当前目录。

打包好的Apk在 android/app/build/outputs/apk/app-release.apk目录下。

生成的Apk安装包 
在向应用商店发布项目之前,要确定测试通过。使用下面的命令将生成的apk安装到设备上。

$ cd android && ./gradlew installRelease 
1
1

切记: installRelease 命令只有在你按上面描述的签名步骤,签名之后才可用。否则安装失败。

使用混淆减小Apk的大小(可选) 
混淆是一个能够直接减小安装包大小的工具。他能够剔除那些在你的app中没有使用到的字节码。 
重点 : 如果你已经使用了混淆,确保他通过测试,混淆经常需要为你正在使用的library做特殊的配置,参照 app/proguard-rules.pro。

设置能够混淆,编辑 android/app/build.gradle:

/** * Run Proguard to shrink the Java bytecode in release builds. */def enableProguardInReleaseBuilds = true 
1
2
3
4
1
2
3
4

个人在生成可发布Apk的总结

1) 没有找到~/.gradle/gradle.properties 目录下的 gradle.properties文件,另外签名秘钥的设置只在一个地方使用,并不需要设置全局变量。所以我的代码如下:

android {    compileSdkVersion 23    buildToolsVersion "23.0.1"    signingConfigs{           release {             storeFile file('tiny-release-key.keystore')             storePassword '201604'             keyAlias 'tiny-key-alias'             keyPassword '2016-2020'           }    }    ... } 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

2) 打包成功会解压包目录为 
解压目录

在assets文件夹下有 index.android.bundle 文件,这里就是我的项目需要的所有Js代码。

你可能感兴趣的文章
[转]开源中最好的Web开发的资源
查看>>
java接口不能实例化原因浅谈
查看>>
Https加密及攻防
查看>>
Java生成随机不重复推广码邀请码
查看>>
Java8 Lambda表达式介绍
查看>>
【JAVA数据结构】双向链表
查看>>
【JAVA数据结构】先进先出队列
查看>>
String类的intern方法随笔
查看>>
【泛型】一个简易的对象间转换的工具类(DO转VO)
查看>>
1.随机函数,计算机运行的基石
查看>>
MouseEvent的e.stageX是Number型,可见as3作者的考虑
查看>>
在mc中直接加aswing组件,该组件还需最后用validate()方法
查看>>
移植Vim配色方案到Eclipse
查看>>
从超链接调用ActionScript
查看>>
谈谈加密和混淆吧[转]
查看>>
TCP的几个状态对于我们分析所起的作用SYN, FIN, ACK, PSH,
查看>>
网络游戏客户端的日志输出
查看>>
关于按钮的mouseOver和rollOver
查看>>
《多线程服务器的适用场合》例释与答疑
查看>>
Netty框架
查看>>