区分程序的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文件,如下图:

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

build.gradle文件:

apply plugin: 'com.android.application'android {compileSdkVersion 22buildToolsVersion "22.0.0"defaultConfig {applicationId "com.raise.wind.debugorrelease"minSdkVersion 14targetSdkVersion 22versionCode 1versionName "1.0"}buildTypes {release {minifyEnabled falseproguardFiles 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";@Overrideprotected 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);elsetextView.setText(release_url);}}

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

点我源码下载

AndroidStudio学习(一)--区分版本相关推荐

  1. 【转】AndroidStudio升到最新版本(3.1.2)之后

    AndroidStudio升到最新版本(3.1.2)之后 暂时发现的需要大家注意的地方 1.androidstudio3无法导入moudle? 例如:我写了一个简单的项目,需要导入一个第三方的moud ...

  2. crh寄存器_牛人的STM32学习笔记(寄存器版本).doc

    牛人的STM32学习笔记(寄存器版本) 一.GPIO口的配置 STM32的DGPIO口最多可以有7组(GPIOa~GPIOg),而每一组GPIO口均有16个双向IO组成.并且没个IO口均可配置成8种模 ...

  3. Adobe Photoshop CC2020版本介绍-新手学习PS那个版本好?

    如何开始使用PS?新手学习PS哪个版本好?如何快速掌握PS?在等待有关PS的这些问题时,小编最近收到了许多这样的问题? adobe系统公司相信从事设计行业的人都不会陌生,Adobe系统公司旗下如图像处 ...

  4. 一个老鸟发的公司内部整理的 Android 学习路线图 Markdown 版本

    jixiaohua发了一篇一个老鸟也发了一份他给公司内部小伙伴整理的路线图.另一份 Android 开发学习路线图.可惜不是MarkDown格式的,所以jixiaohua直接上传的截图,在jixiao ...

  5. Spring Cloud学习笔记(Hoxtonl版本)

    Spring Cloud 什么是微服务 提出者与时间: Martin Fowler ,Mar 2014 微服务架构是一种架构模式,它提倡单一应用程序划分成一组小的服务,服务之间互相协调,互相配合,为用 ...

  6. 《动手学深度学习》PyTorch版本

    Dive-Into-Deep-Learning-PyTorch-PDF 简介   本项目对中文版<动手学深度学习>中的代码进行整理,并参考一些优秀的GitHub项目给出基于PyTorch的 ...

  7. AndroidStudio中下载某版本gradle速度慢,从哪里高速下载指定版本gradle

    场景 AndroidStudio打开新项目后解决下载某版本gradle慢的问题: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...

  8. UE4学习-4.25版本Possess无法继承、UNavigationSystem命名空间找不到的解决方法

    文章目录 Possess无法继承 UNavigationSystem 不存在 Possess无法继承 跟着视频学习吃豆人游戏,在敌人AI导航网格那里,因为版本问题(我的是4.25版本),部分内容和视频 ...

  9. 深度学习 CNN CUDA 版本2

    作者:zhxfl 邮箱:zhxfl##mail.ustc.edu.cn 主页:http://www.cnblogs.com/zhxfl/p/4155236.html 第1个版本blog在这里:http ...

最新文章

  1. JVM:对象的实例化、内存布局与访问定位
  2. 科学家利用BCI技术来缓解幻肢疼痛
  3. 走近Java模块化系统OSGi
  4. 【Linux】一步一步学Linux——echo命令(203)
  5. 中兴高调秀Axon 10 Pro 5G版20倍变焦样张:号称媲美万元广角镜头
  6. Oracle常用存储过程写法
  7. 如何防止在ListBox中添加很多数据出现不停的刷新?
  8. Android查看wakeLock调用情况
  9. XenApp/XenDesktop快速部署工具- QDT for 7.6 LTSR
  10. 看看绝地求生—PUBG的游戏模型是怎么出来的!
  11. 赖活不如好死?慎选你的死亡方式
  12. 明明都保意外,定期寿险和意外险到底区别在哪里?
  13. 【离散数学】群论知识点总结
  14. PDF文件如何删除页面
  15. ZYNQ LWIP实验
  16. 黑帽SEO关键字堆砌的原理以及作用
  17. 每日一句_《定风波·暮春漫兴》
  18. 视频融合云服务EasyCVR平台部署在云服务器中的配置关键点
  19. 飞鸽传书 linux安装,在Ubuntu 8.04下完美安装飞鸽传书
  20. BEA助中国一汽构建核心ERP系统

热门文章

  1. 电子信息工程学生的小述
  2. 神经网络之ResNet模型的实现(Python+TensorFlow)
  3. 基于OPENCV的投影仪标定(源码)
  4. 软件工程项目实训05
  5. 信安第一次渗透实验(1)
  6. Java中数组赋值0-99_Java 数组
  7. pythoncad官网_用Python来控制Autocad的打印------以Pycomcad为例
  8. Earth Engine下长时间序列监测
  9. webpack优化之HappyPack 实战
  10. SEO(搜索引擎优化)最佳实践