我们都知道在写react-native应用时候,安装到手机上调试时候摇一摇就可以弹出菜单项供我们选择,而这个apk就在“./android/app/build/outputs/apk”这个目录下的app-debug.apk这个应用,然而我们发布的时候并不能直接把这个发布出去,今天就来说一下如何打包apk。
要知道应用想要发不到应用市场,必须要有数字签名,在eclipse和android studio中都可以右键直接生成的,那么在react native下如何生成数字签名呢。
###1、使用JDK生成数字签名
你可以用keytool命令生成一个私有密钥。在Windows上keytool命令放在JDK的bin目录中(比如C:\Program Files\Java\jdk1.8\bin),你可能需要在命令行中先进入那个目录才能执行此命令(如果没有将bin配置到path的话),
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
打开命令行使用上述命令,会让你输入密钥口令和发布者信息等要求,按照提示一个个来。没有的可以直接enter跳过,最后会在在当前目录下生成一个my-release-key.keystore的文件。
###2、设置gradle变量
把上一步生成的my-release-key.keystore文件拷贝到工程中的./android/app这个文件夹中去。
在你的C盘用户文件夹(windows上可能是C:\Users\用户名,而mac上可能是/Users/用户名)中找到.gradle文件夹,找到gradle.properties这个文件(没有就新建一个),添加以下代码(*****换成你设置的密码):
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****
###3、添加签名到项目的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
}
}
}
###4、生成发行apk包
打开命令行,切换到项目目录下,cd android,切换到android目录,使用“gradlew assembleRelease”命令打包(mac或Linux系统在前面加上./),之后你就能在“./android/app/build/outputs/apk”下看到app-release.apk这个安装包了,这就已经是打包好的了。
看到下面标志就证明打包成功了。
###5、运行打包好的安装包安装到手机上
在刚才的目录下,运行“gradlew installRelease”命令即可将该打包好的apk安装到手机上运行查看了。