Mac是咱們程序員的開(kāi)發(fā)利器,各種爽,尤其是做RN的跨平臺(tái)開(kāi)發(fā),然而對(duì)于使用習(xí)慣Window的小伙伴來(lái)說(shuō)使用 react-native init XX創(chuàng)建出來(lái)的的項(xiàng)目打包就是一個(gè)痛苦的歷程
以lz自身來(lái)做例子:
1.簽名的生成
進(jìn)入項(xiàng)目的android/app目錄下執(zhí)行腳本
$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
我們生成了一個(gè)my-release-key.keystore簽名文件, alias 是 my-key-alias
當(dāng)然了同時(shí)我們也需要牢記密碼 待會(huì)要使用的額
2.配置build.gradle
首先在gradle.properties定義一些常量,當(dāng)然了也可在build.gradle中寫(xiě)死,但是那樣每次修改都會(huì)重現(xiàn)的構(gòu)建比較耗時(shí)
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 因此是那么的不同-------您會(huì)遇到密鑰傳訪問(wèn)權(quán)限問(wèn)題
破解步驟:
1.找到密鑰串填寫(xiě)信息
security find-generic-password -s android-app-access -w
現(xiàn)在可以使用了.當(dāng)然需要在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()
}
最終配置如下,上圖更清晰