我是一位探索Android世界的新开发者。我目前正在通过Udacity教程创建Sunshine应用程序。在片段活动类中,为了从openweathermap获取数据,我必须将从我的帐户获得的API密钥添加到生成的URL的末尾。在Fragment activity中调用了BuildConfig.java(单击以查看对作为String apiKey一部分的第6行的BuildConfig.java调用)。
build.gradle文件如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.example.android.sunshine.app"
minSdkVersion 10
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
buildTypes.each {
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', 'c882c94be45fff9d16a1cf845fc16ec5'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.1.0'
}
buildTypes.each中的使用' String',' OPEN_WEATHER_MAP_API_KEY'' c882c94be45fff9d16a1cf845fc16ec5'来调用it.buildConfigField。导致
public static final String OPEN_WEATHER_MAP_API_KEY = c882c94be45fff9d16a1cf845fc16ec5;
在BuildConfig.java中生成,但是我一直收到此错误: Cannot Resolve Symbol(单击以查看错误消息和BuildConfig.java文件) 我不明白为什么字符串OPEN_WEATHER_MAP_API_KEY被自动创建为只有一组字母和数字而没有引号,但是如果我编辑代码来阅读:
public static final String OPEN_WEATHER_MAP_API_KEY = "c882c94be45fff9d16a1cf845fc16ec5";
或
public static final String OPEN_WEATHER_MAP_API_KEY = 'c882c94be45fff9d16a1cf845fc16ec5';
BuildConfig.java会自动更改。 我不确定我做错了什么,我检查了许多没有任何关于这个问题的信息的Udacity视频。如果你知道如何解决这个问题,请告诉我。
问候。
答案 0 :(得分:21)
更改
buildTypes.each {
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', 'c882c94be45fff9d16a1cf845fc16ec5'
}
与
buildTypes.each {
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', "\"c882c94be45fff9d16a1cf845fc16ec5\""
}
这种方式OPEN_WEATHER_MAP_API_KEY
应该正确转义
答案 1 :(得分:3)
"\"c882c94be45fff9d16a1cf845fc16ec5\""
这是更改BuildTypes容器的正确语法。