AndroidStudio学习(一)--区分版本

区分程序的debug模式和release模式

我们常常在写(调试)程序的时候,是处于debug模式下的。但是正式发布的时候,又要发布release版本,如果在代码中不做区别的话,那就必须要在发布的时候,手动修改代码,才能适应正式环境。比如很常见的:在app中访问网络的时候,在调试的时候一般都是内部的测试环境的url,而在发布正式版的时候,又要把测试环境的url修改为正式环境的url.此时以前我采用的方法都是去注释掉一行代码来实现上面的功能

// private final static String url = "http://192.168.1.210";
private final static String url = "http://www.xxx.com";

就像上述2行代码,在每次发布的时候,都是需要手动的去更改,之前就嫌烦,现在在Androidstudio中,终于可以区分这两个开发模式了。
在AS中,我们可以使debug模式的时候,去加载我们设置的res/values/strings.xml文件,这样就能根据加载的是哪一个文件来进行区分(实际上是先去debug模式下的strings.xml文件去找对应的string,如果不存在还是会去加载普通的string,所以这是兼容的模式)。

(一)新建一个AS项目,默认目录结构如下

(二)为了指定特定的strings.xml文件

在app目录下新建build-typeds/res/values/strings.xml文件,如下图:
AndroidStudio学习(一)--区分版本_第1张图片

(三)在app/build.gradle配置debug模式下的res目录

build.gradle文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.0"

    defaultConfig {
        applicationId "com.raise.wind.debugorrelease"
        minSdkVersion 14
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    //这里配置各种资源代码的文件位置
    sourceSets {
        //debug模式下文件夹的位置
        debug {
            res.srcDirs = ['res']
        }
        //debug模式的根目录,注意,这行代码不能在debug{}前
        debug.setRoot('build-types')
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.0.0'
}

(四)在两个strings.xml文件下设置不同的值,来区分版本

debug下的strings.xml文件代码:

<resources>
    <string name="app_name">debug</string>
    <string name="compile_level">debug</string>

    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
</resources>

release下的strings.xml文件代码:

<resources>
    <string name="app_name">release</string>
    <string name="compile_level">release</string>

    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
</resources>

好了,配置结束,可以运行试试,在系统中appname已经变成debug就成功了。

下面在activity中写上测试代码:

public class MainActivity extends ActionBarActivity {

    String debug_url = "192.168.1.210";
    String release_url = "www.xxx.com";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView textView = (TextView) findViewById(R.id.test);

        if (getString(R.string.compile_level).equals("debug"))
            textView.setText(debug_url);
        else
            textView.setText(release_url);

    }

}

这样在调试运行后,就会看到页面上出现192.168.1.210了,证明app已经能区分debug模式还是release模式了。

点我源码下载

你可能感兴趣的:(Android开发)