簡體   English   中英

react-native-config 無法在 build.gradle 中使用環境變量

[英]react-native-config unable to use env variables in build.gradle

我已經設置了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

在 gradle 構建中,您使用project.env.get("VAR NAME")

MYAPP_RELEASE_STORE_FILE中的文件似乎不存在。 你在里面有什么價值? 該文件是否存在於同一文件夾中?

但也要注意你不應該在.env存儲簽名秘密; 來自 react-native-config 自述文件:

請記住,此模塊不會混淆或加密用於打包的機密,因此請勿將敏感密鑰存儲在 .env 中。 基本上不可能阻止用戶對移動應用程序的秘密進行逆向工程,因此請在設計您的應用程序(和 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
    }
}

盡管自動鏈接為您設置了一切,但仍需要手動設置它以在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM