在Compose Desktop專案中,我們如何在不提交的情況下管理密鑰?
在 Android 專案中,Gradle 具有buildConfigField()和resValue()功能。它們將BuildConfig.java在編譯期間生成,我們可以在運行時使用這些值。
例如,在一個 Android 專案中,首先,我們創建兩個環境變數 —RELEASE_API_KEY和STAGING_API_KEY(它可以是本地計算機,也可以是 CI/CD 環境)。
然后在 build.gradle 檔案中我們可以說:
android {
buildTypes {
release {
buildConfigField("String", "API_KEY", "\"${System.getenv('RELEASE_API_KEY')}\"")
}
staging {
buildConfigField("String", "API_KEY", "\"{System.getenv('STAGING_API_KEY')}\"")
}
}
}
..在 Kotlin 代碼中我們可以使用:
val apiManager = ApiManager( BuildConfig.API_KEY )
Compose Desktop專案中是否有類似的方法,以便:
- 我不必將秘密提交到源存盤庫?
- 我可以在 CI/CD 環境中輕松配置機密嗎?
uj5u.com熱心網友回復:
所以有一些 Gradle 插件就是為了解決這樣的問題而構建的——將構建時間常量注入到我們的運行時代碼中。這是谷歌搜索中出現的一個:
https://github.com/gmazzo/gradle-buildconfig-plugin
這是我將 config 中的 c 換成 ak 時出現的問題(你知道這些 Kotlin 開發人員無法抗拒嗎?)
https://github.com/yshrsmz/BuildKonfig
當然 - 如果你不想像這樣搞亂 gradle 插件,簡單的解決方案是用你的開發代碼創建一個檔案,其中相同的常量被清空或為空字串,或者參考一個被忽略的檔案來獲取值,然后使用 bash 覆寫 CI 中的檔案,用你想要的替換所有常量。當您無法訪問 gradle 時,這種方法非常有用,例如在 js 專案中:
#!/usr/bin/env bash
AWS_FILE=<your aws credentials file here>
if [ -f "$AWS_FILE" ]; then
echo "Injecting the AWS Credentials"
echo "export const AWS_CREDENTIALS = {
clientId: \"$AWS_CLIENT_ID\",
secret: \"$AWS_CLIENT_SECRET\"}" > $AWS_FILE
else
echo "$AWS_FILE doesn't exist."
exit 1
fi
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/427791.html
標籤:毕业典礼 智能理念 android-jetpack-compose 撰写桌面 gradle-kts
