In my Android Studio
project there are two build configuration
with some buildConfigField
:
buildTypes {
def SERVER_URL = "SERVER_URL"
def APP_VERSION = "APP_VERSION"
debug {
buildConfigField "String", SERVER_URL, "http://dev.myserver.com"
buildConfigField "String", APP_VERSION, "0.0.1"
}
release {
buildConfigField "String", SERVER_URL, "https://myserver.com"
buildConfigField "String", APP_VERSION, "0.0.1"
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
I am getting and error as follows:
/path/to/generated/BuildConfig.java
Error:(14, 47) error: ';' expected
Error:(15, 47) error: ';' expected
the generated BuildCofig.java is as follows:
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.mycuteoffice.mcoapp";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "1.0";
// Fields from build type: debug
public static final String APP_VERSION = 0.0.1;
public static final String SERVER_URL = http://dev.mycuteoffice.com;
}
I think the APP_VERSION
and SERVER_URL
are not getting generated properly as being String type they do not have quotes.
I am not sure why it is being generated in such a way. Please let me know how can I resolve this issues.
Escape your string quotes:
I was confused as well. But there is a sense - "String" defines the field's type, whereas the field value isn't get quoted automatically in order to allow us to use expressions here:
buildConfigField "String", "TEST", "new Integer(10).toString()"
Otherwise, it wouldn't be possible.
Only \"
my stuff
\" worked for me. And I have all sorts of weird characters inmy stuff
.Use
for variable. Reference from here
in app build.gradle
then in BuildConfig
If by "resolving the issues" you mean not having to double quote literals, I haven't come across anything as it seems to be working as designed.
I've been experimenting with moving the literals into "gradle.properties" as a workaround, turning potentially multiple ugly lines into one ugly line.
Like so:
gradle.properties
Further thoughts: