Java – every environment configuration for Android
What solutions does Android provide for each environment configuration? In the web world, I'm used to c# having configuration transformations and putting them in place Copy the properties file to the built Java Web Application in war
What is the Android solution? Now, I see a lot of people just hard code static variables and change them when they want to build a production APK
Editor: look at similar problems. People suggest using SharedPreferences, but I don't understand because it seems to be a runtime object, not a file I'm not looking to store these values at startup, but to let the application build using a set of properties in the configuration file
Solution
1.) I recommend using gradle to set the environment settings
Android has great plug-ins: http://tools.android.com/tech-docs/new-build-system/user-guide
2.) use "productflavors" to set the environment
Look at this: http://tulipemoutarde.be/2013/10/06/gradle-build-variants-for-your-android-project.html
An example configuration would be:
android { compileSdkVersion 19 buildToolsVersion "19.0.1" sourceSets { main { manifest.srcFile 'src/main/AndroidManifest.xml' java.srcDirs = ['src/main/java'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['src/main/res'] assets.srcDirs = ['src/main/assets'] } } buildTypes { debug { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.txt' } release { runProguard true proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.txt' } } productFlavors { production { packageName "com.sample.app" } staging { packageName "com.sample.app.staging" } develop { packageName "com.sample.app.develop" } } }