私のgradleファイルにこれらの行を追加すると、このエラーが発生しました:
buildTypes.each {
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', MyOpenWeatherMapApiKey
}
その後、ログショー:
Could not find property 'MyOpenWeatherMapApiKey' on com.Android.build.gradle.AppExtension_Decorated@c3b784
Googleで検索したソリューションでは、問題を解決できません。私が間違っていた場所を教えてください?
String
を使用しているため、次の構文を使用する必要があります。
buildConfigField "String" , "OPEN_WEATHER_MAP_API_KEY" , "\"XXXXX-XXXXX-XXX\""
最後のパラメーターは文字列でなければなりません
それ以外の場合は、次のようなものを使用できます。
resValue "string", "OPEN_WEATHER_MAP_API_KEY", "\"XXXXX-XXXXX-XXX\""
最初のケースでは、BuildConfig
ファイルに定数が生成されます。
2番目のケースは、@string/OPEN_WEATHER_MAP_API_KEY
アノテーションを使用してアクセスできる文字列リソース値を生成します。
local user設定でMyOpenWeatherMapApiKey
を定義する必要があるため、ホームgradle設定に移動します:~/.gradle/gradle.properties
(Win:%USERPROFILE%\.gradle\gradle.properties
)。 gradle.properties
は存在しません-作成してください。
ファイルに次の行を追加します。
MyOpenWeatherMapApiKey="XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
(残念ながら、Android Udacityの先生は、gradleの観点からそれがどのように機能するかを説明するのはあまり良いことではありません。gradlehow it.buildConfigField動作します)
「OPEN_WEATHER_MAP_API_KEY」は、設定が必要な「MyOpenWeatherMapApiKey」という名前のgradleプロパティを参照します。
理由の1つは、ビルドシステムがこのためのコードを生成することです。もう1つは、誤ってAPI-KEYをGitHubまたは他のパブリックリポジトリにコミットしないようにするためです。
次のように、「gradle.properties」ファイルにエントリを追加する必要があります。
MyOpenWeatherMapApiKey = "[YOUR-API-KEY]"
次に、プロジェクトをgradleと同期します(Android Studioを使用している場合)
「Open Weather Map APIキーが必要です。」を参照してください。 https://github.com/udacity/Sunshine-Version-2 の下部
次の行を追加します。
MyOpenWeatherMapApiKey="yourUniqueApiKey"
この問題を解決するには、ここでの複数の回答から少しの情報を使用する必要がありました。
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', MyOpenWeatherMapApiKey
は問題ありません。上位の回答では、ユーザーの「グローバル」キーを参照するのではなく、キーがこのフィールドに直接入力されます。OPEN_WEATHER_MAP_API_KEY
によって参照されているMyOpenWeatherMapApiKey
という名前のフィールドに入れることを期待しています。これを行うには、Android Studioでgradle.propertiesを開き、MyOpenWeatherMapApiKey="<Your Key Here>"
を追加しますこれで、問題なくアプリをビルドできるはずです。
受け入れられた答えは絶対に正しいです。 Stringとして内部の値をフォーマットする別の方法、おそらくより簡単な方法は次のとおりです。
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', '"xxxxxxxxxxxxxxxxxx"'