【问题标题】:react-native-config unable to use env variables in build.gradlereact-native-config 无法在 build.gradle 中使用环境变量
【发布时间】:2017-12-05 17:55:17
【问题描述】:

我有react-native-config 设置并在javascript 中使用它没问题,但我无法在build.gradle 中像这样使用它。

release {
     if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
         storeFile file(project.env.get("MYAPP_RELEASE_STORE_FILE"))
         storePassword project.env.get("MYAPP_RELEASE_STORE_PASSWORD")
         keyAlias project.env.get("MYAPP_RELEASE_KEY_ALIAS")
         keyPassword project.env.get("MYAPP_RELEASE_KEY_PASSWORD")
     }
}

版本

react-native-cli: 2.0.1
react-native: 0.49.5
react: 16.0.0
react-native-config: 0.11.1

输出

$ ./gradlew assembleRelease`
... shortened output
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:validateSigningRelease'.
> Keystore file not set for signing config release

【问题讨论】:

    标签: react-native build.gradle react-native-config


    【解决方案1】:

    在 gradle build 中你使用project.env.get("VAR NAME")

    【讨论】:

    • 无法为 org.gradle.api.Project 类型的项目 ':app' 获取未知属性 'env'。知道缺少什么吗?
    • 大多数时候这意味着我的 build.gradle 是错误的。在顶部添加/更改此“apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"”(下方:import com.android.build.OutputFile)跨度>
    • 感谢它的工作。如何访问 gradle.properties 文件中的 env 配置?
    • 你不能。您需要按照this 中的说明以某种方式对属性进行后处理。目前,Gradle 不提供任何此类功能来“自定义加载”gradle.properties
    【解决方案2】:

    虽然自动链接设置全部为你,但仍需要手动设置才能在build.gradle中使用它

    申请自:project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"

    到最顶部,在android/app/build.gradle 文件中的import com.android.build.OutputFile 正下方

    https://github.com/luggit/react-native-config#extra-step-for-android

    【讨论】:

      【解决方案3】:

      MYAPP_RELEASE_STORE_FILE 中的文件似乎不存在。你在里面有什么价值?该文件是否存在于同一文件夹中?

      但也请注意,您不应将签名秘密存储在 .env 中;来自 react-native-config 自述文件:

      请记住,此模块不会混淆或加密打包机密,因此请勿将敏感密钥存储在 .env 中。它是basically impossible to prevent users from reverse engineering mobile app secrets,因此请在设计您的应用(和 API)时牢记这一点。

      您可以做的是使用 Gradle 属性文件来保守秘密。比如~/.gradle/gradle.properties:

      MYAPP_RELEASE_KEY_ALIAS=myapp
      MYAPP_RELEASE_STORE_PASSWORD=abc
      MYAPP_RELEASE_KEY_PASSWORD=def
      

      这些仅在build.gradle 中可用:

      signingConfigs {
          release {
              storeFile "myapp.keystore"
              keyAlias MYAPP_RELEASE_KEY_ALIAS
              storePassword MYAPP_RELEASE_STORE_PASSWORD
              keyPassword MYAPP_RELEASE_KEY_PASSWORD
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2022-12-19
        • 1970-01-01
        • 1970-01-01
        • 2020-02-04
        • 2016-01-12
        • 1970-01-01
        • 2022-01-01
        • 1970-01-01
        • 2018-06-10
        相关资源
        最近更新 更多