Android separate string values for release and debug builds

16,546

Solution 1

Assuming you use Android Studio, by default the system creates a basic release and debug flavor. So if you add a debug and release folder in the app/src folder of your project you can declare separate values there.

So your structure should be like this:

project
  -app
    -src
      -debug
        -java
          ...
        -res
          -values
            -strings.xml
      -release
        -java
          ...
        -res
          -values
            -strings.xml
      -main
        -java
          ...
        -res
          -values
            -strings.xml

I should also add that if you have a string which isn't defined in either of the debug or the release folder that it will fallback to your main folder.

Solution 2

Well, you can use Gradle if needs to use for a few strings

buildTypes {
    release {
        resValue 'string', 'adUnitIdMain', '"production-id-value-should-be-here"'
        resValue 'string', 'adUnitIdList', '"production-id-value-should-be-here"'
        resValue 'string', 'adUnitIdDetail', '"production-id-value-should-be-here"'
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
    debug {
        resValue 'string', 'adUnitIdMain', '"test-id-value-should-be-here"'
        resValue 'string', 'adUnitIdList', '"test-id-value-should-be-here"'
        resValue 'string', 'adUnitIdDetail', '"test-id-value-should-be-here"'
    }
}

Solution 3

Just make two flavors in build.gradle. Then two directories, again as given in the link (developer.android.com/tools/building/configuring-gradle.html ). Since you need only strings to be altered, just copy your strings.xml files into the new directories (i.e. dev and production) Delete your original strings.xml

And thats it. :)

No need to move your java files or other layout files.

In short, leave everything in your 'main' directory that should be consistent across all build flavors. Override the values dependent upon build flavor into their respective directory.

Share:
16,546
spaceMonkey
Author by

spaceMonkey

Nitin Muthyala, Software Engineer,iOS and Android Developer. Always willing to help :D

Updated on June 15, 2022

Comments

  • spaceMonkey
    spaceMonkey about 2 years

    Every time i release my app i change all my url strings and some keys from testing to production. The way I do it is just comment out the testing strings before i release. Is there a better way to handle strings based on the build type ?