android - How to generate buildConfigField with String type

ID : 20356

viewed : 6

Tags : androidandroid-gradle-pluginandroid

Top 5 Answer for android - How to generate buildConfigField with String type

vote vote

94

String type build config fields should be declared like this:

buildConfigField "String", "SERVER_URL", "\"http://dev.myserver.com\"" 

the field name in quotes, the field value in escaped quotes additionally.

vote vote

86

Why everybody is so mad about escaping double quotes? Looks ugly! This is Groovy, guys, you can just mix single and double quotes:

buildConfigField "String", 'SERVER_URL', '"http://dev.myserver.com"' buildConfigField "String", 'APP_VERSION', '"0.0.1"' 
vote vote

79

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:

buildTypes { def SERVER_URL = "SERVER_URL" def APP_VERSION = "APP_VERSION"  def CONFIG = { k -> "\"${project.properties.get(k)}\"" }  debug {     buildConfigField "String", SERVER_URL, CONFIG("debug.server.url")     buildConfigField "String", APP_VERSION, CONFIG("version") }  release {     buildConfigField "String", SERVER_URL, CONFIG("release.server.url")     buildConfigField "String", APP_VERSION, CONFIG("version")      minifyEnabled false     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } 

gradle.properties

version=0.1.1 ... debug.server.url=http://dev.myserver.com ... release.server.url=http://myserver.com ... 

Further thoughts:


def CONFIG = { b,k -> "\"${project.properties.get(b+'.'+k)}\"" } def CONFIG_DEBUG = { k -> CONFIG('debug',k) } def CONFIG_RELEASE = { k -> CONFIG('release',k) } 

def CONFIG = { b,k -> "\"${project.properties.get(b+'.'+k)}\"" } def CONFIG_INT = { b,k -> "${project.properties.get(b+'.'+k)}" } ... 
vote vote

69

Use

 buildConfigField "String", "FILE_NAME", "\"{$fileName}\""  

for variable. Reference from here

vote vote

54

Escape your string quotes:

buildConfigField "String", 'SERVER_URL', "\"http://dev.myserver.com\"" buildConfigField "String", 'APP_VERSION', "\"0.0.1\"" 

Top 3 video Explaining android - How to generate buildConfigField with String type

Related QUESTION?