React Native打包安卓apk时出现签名配置错误怎么办?
我在用React Native打包安卓release版时一直报错,提示Keystore file not found。按照官方文档配置了android/app/build.gradle的signingConfig,也设置了环境变量,但执行./gradlew assembleRelease还是报同样的错,明明文件路径写对了啊…
尝试过直接在build.gradle里写绝对路径:
android {
...
signingConfigs {
release {
storeFile file("/Users/name/key.jks")
// 其他配置
}
}
}
但依然提示找不到文件,这是配置位置有问题吗?或者需要额外设置权限?
android {
...
signingConfigs {
release {
storeFile file("key.jks")
storePassword "你的密码"
keyAlias "你的别名"
keyPassword "你的密码"
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
另外要注意一点,gradle执行的时候可能会切换工作目录,导致相对路径解析出问题。所以最好确认一下当前执行目录是不是项目根目录,不是的话需要调整脚本。
还有个常见坑是文件权限问题,确保这个keystore文件的权限设置允许读取,Linux/Mac下可以执行 chmod 644 key.jks 来设置合适的权限。
最后提醒一下,记得把keystore的密码信息从代码里抽离出来,用环境变量或者CI配置来管理这些敏感信息,不然提交到版本库会有安全风险。我之前就遇到过类似的情况,排查了好久才发现是权限问题,真是累觉不爱。
./gradlew时当前目录不是项目根目录的话,相对路径就会出错。建议用项目相对路径写法更稳妥:或者用环境变量会更灵活些:
记得在打包命令里带上环境变量:
另外检查一下 key.jks 文件的权限,确保有读取权限:
这样配置后应该就能找到文件了。如果还有问题,可以临时把
key.jks拷贝到android/app/目录下,用相对路径更直观。