Android separate string values for release and deb

2019-02-08 08:38发布

问题:

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 ?

回答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.



回答2:

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.