我正在尝试在React Native中构建一个发行版.apk文件但没有成功。
我按照所有说明here,但在/ my-project / android路径中运行gradlew assembleRelease
之后总是得到相同的结果:
:app:validateSigningRelease FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:validateSigningRelease'.
> Keystore file not set for signing config release
我正在使用Windows 10,我怀疑它是编辑文件〜/ .gradle / gradle.properties
从我的理解〜是c:\ Users \ User 我甚至内置了一个c:\ Users \ User.gradle文件夹。
答案 0 :(得分:8)
我有相同的错误消息,但我刚修好了。
如RN文件Facebook Doc
中所述编辑文件〜/ .gradle / gradle.properties 或 android / gradle.properties
我编辑了另一个位于此处的文件
〜/ MYAPP /机器人/ gradle.properties
然后再清理并再次构建。 我希望这会有所帮助。
答案 1 :(得分:4)
我发现这个帖子已经活动了近两个月了,但我想我可以写下导致这个问题的原因,也许它可以帮助别人。
实际上非常简单:当我从文档中复制配置时,格式化没有保留,它可以将所有内容粘贴在一行上,也可以粘贴在多行上,但也可以在不应该的地方打破这些行。吨。所以你只需要确保 build.gradle 文件中的行看起来像:
keyPassword MYAPP_RELEASE_KEY_PASSWORD
而不是
keyPassword
MYAPP_RELEASE_KEY_PASSWORD
就是这样。
答案 2 :(得分:2)
您可以尝试将gradle.properties变量设置为环境变量,并将android / app / build.gradle中的signinConfig版本更改为:
signingConfigs {
release {
storeFile file(String.valueOf(System.getenv("GRADLE_KEYSTORE")))
storePassword System.getenv("GRADLE_KEYSTORE_PASSWORD")
keyAlias System.getenv("GRADLE_KEYSTORE_ALIAS")
keyPassword System.getenv("GRADLE_KEYSTORE_ALIAS_PASSWORD")
}
}
我在Mac上,但我猜测环境变量应该在Windows上比全局.gradle / gradle.properties文件更好用
希望有所帮助
答案 3 :(得分:1)
为其他寻求帮助的人提供便条。如果您已将密钥库以及密码和别名上载到appcenter,则无需在android / gradle.properties或android / app / build.gradle中进行任何设置,密钥库文件和上传的env变量将用于签名构建后的apk
答案 4 :(得分:1)
.keystore
扩展名!
MYAPP_RELEASE_STORE_FILE=android-app-demo-release-key.keystore
答案 5 :(得分:0)
我也使用Windows 10。您必须为Windows安装Git Bash命令行才能执行此操作。安装Git Bash后,导航到你的项目/ android / app并执行vim ~/.gradle/gradle.properties
这适用于我。
答案 6 :(得分:0)
我也在Windows 10上并在RN v0.54.4中进行开发。我在这个版本中遇到了这个错误,但是我的旧应用程序没有。对我来说,我只需要删除React-Native文档中的if语句。他们告诉你要做
release {
if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
}
}
但我将其改为
release {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
}
这是文档在早期版本的RN中的代码。
答案 7 :(得分:0)
我不想更改通用的~/.gradle/gradle.properties
,但上面定义了MY_APP...
个var。
由于某种原因,我不知道我的android/app/build.gradle
MY_APP_...
变量是使用通用文件的值来解析本地文件的值。我刚刚在MY_APP...
和PROJECTNAME...
中将android/app/build.gradle
vars重命名为android/gradle.properties
,现在可以使用了。
答案 8 :(得分:0)
我遇到了同样的问题,并且在尝试了许多事情之后:
signingConfig signingConfigs.release
;有效但创建了未签名的apk *.keystore
。最终我想念的是我不得不放
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****
在MYAPP/android/.gradle/4.10.1/gc.properties
内部。
现在我在文档中知道他们在~/.gradle/gradle.properties
或android/gradle.properties
但是~/.gradle/gradle.properties
不存在。并将它们放入android/gradle.properties
也不起作用。
希望有帮助!
答案 9 :(得分:0)
您必须将以下代码放在build.gradle中。
storeFile file(MYAPP_UPLOAD_STORE_FILE)
storePassword MYAPP_UPLOAD_STORE_PASSWORD
keyAlias MYAPP_UPLOAD_KEY_ALIAS
keyPassword MYAPP_UPLOAD_KEY_PASSWORD
您可以通过直接设置值进行测试。
storeFile file('my-release-key.keystore') storePassword "123456" keyAlias "my-key-alias" keyPassword "123456"
答案 10 :(得分:0)
第 1 步:在您的终端中运行此程序并输入所有必需品。
body: Column(
children: [
Row(........),
Expanded(child: ListView(children: [....])),
Row(........),
]
)
第 2 步:将 my-upload-key.keystore 放入 ../android/app
第 3 步:在 android/gradle.properties(输入第 1 步生成的密码):
Scaffold
第 4 步:在 android/app/build.gradle 文件中,添加以下内容(您也可以从此文件更改应用程序的版本名称):
MasterViewController controller = new MasterViewController();
this.SetViewController(controller, UISplitViewControllerColumn.Compact);
第 5 步:完成所有这些之后,您可以继续进行
keytool -genkey -v -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
或
MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore
MYAPP_UPLOAD_KEY_ALIAS=my-key-alias
MYAPP_UPLOAD_STORE_PASSWORD=****
MYAPP_UPLOAD_KEY_PASSWORD=****
答案 11 :(得分:0)
检查 signingConfigs
中的 app/build.gradle
必须与 gradle.properties
中的配置匹配:
在我的gradle.properties
MYAPP_UPLOAD_STORE_FILE=./src/key_store/test.keystore
MYAPP_UPLOAD_KEY_ALIAS=key0
MYAPP_UPLOAD_STORE_PASSWORD=123456
MYAPP_UPLOAD_KEY_PASSWORD=123456
在我的app/build.gradle
signingConfigs {
release {
if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {
storeFile file(MYAPP_UPLOAD_STORE_FILE)
storePassword MYAPP_UPLOAD_STORE_PASSWORD
keyAlias MYAPP_UPLOAD_KEY_ALIAS
keyPassword MYAPP_UPLOAD_KEY_PASSWORD
}
}
}