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()
}
最終配置如下,上圖更清晰