Mac是咱们程序员的开发利器,各种爽,尤其是做RN的跨平台开发,然而对于使用习惯Window的小伙伴来说使用 react-native init XX创建出来的的项目打包就是一个痛苦的历程
以lz自身来做例子:
1.签名的生成
进入项目的android/app目录下执行脚本
$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
我们生成了一个my-release-key.keystore签名文件, alias 是 my-key-alias
当然了同时我们也需要牢记密码 待会要使用的额
2.配置build.gradle
首先在gradle.properties定义一些常量,当然了也可在build.gradle中写死,但是那样每次修改都会重现的构建比较耗时
YAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****
然后是配置build,gradle
android {
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
}
一切都是那么的顺理成章,然而我们Mac 因此是那么的不同-------您会遇到密钥传访问权限问题
破解步骤:
1.找到密钥串填写信息
security find-generic-password -s android-app-access -w
现在可以使用了.当然需要在build.gradle中配置
def getPassword(String currentUser, String keyChain) {
def stdout = new ByteArrayOutputStream()
def stderr = new ByteArrayOutputStream()
exec {
commandLine 'security', '-q', 'find-generic-password', '-a', currentUser, '-s', keyChain, '-w'
standardOutput = stdout
errorOutput = stderr
ignoreExitValue true
}
//noinspection GroovyAssignabilityCheck
stdout.toString().trim()
}
最终配置如下,上图更清晰