React-Native Keystore文件未设置为签名配置版本

时间:2017-03-25 19:35:26

标签: react-native react-native-android

我正在尝试在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文件夹。

12 个答案:

答案 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.propertiesandroid/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
        }
    }
}