在开发中,对产品进行迭代升级时,有时会遇到这种情况,手机中已经装了一个已经上线的产品,但是开发时还要在装一个正在开发中的产品,这时就只能卸载一个,才能安装另一个,比较麻烦,而且开发版本和发布版本 的一些配置是不一样的,比如接口地址、第三方的app key 等,这些内容如果直接在代码里 改来改去比较麻烦,而且还容易出错。
所以在这里,就和大家分享一下怎么进行生产和开发的环境分离。
1、首先在Project Structure中 在Build Tyoes中 默认就有debug和release两个版本,而我们只需要在debug版本中的Application Id Suffix 中输入.debug(叫什么都行,注意和下面的步骤保持一致),release版本不动
2、在src目录下新建debug目录,目录名要和Application Id Suffix一致,然后在debug目录下新建res目录,在res目录下建立图片和values文件夹,如图:
这里目录不要弄错了,当我们在运行时选择debug版本时,这里的图片和strings里的内容会自动替换main目录下的相应的资源文件,
strings里放一些debug和release版本不同的配置信息:如:
这里以app名称,接口根地址和本地缓存文件路径做演示,
我们在Application中的onCreate中根据运行时选择的是debug还是release进行取出不同的值。
3、运行时在BuildVariants种选择是运行debug和是release版本
这时要注意的是: 在运行release版本时,如果你没有配置签名文件信息时,会报:
Error
app-release-unsigned.apk is not signed. Please configure the signing information for the selected flavor using the Project Structure dialog.
Open Project Structure Dialog
1)、这时,我们首先要在project Structure的Signing中添加签名文件信息,如图:
2)、然后在Flavors中将Signing Config选择为刚才配置的签名文件信息
到这一步基本算是完成了生产和开发的环境分离,就可以在手机中同时安装生产和开发两个版本的应用了,不用在每次都要卸载安装了。
需要注意的是:在android5.0以上的系统中,对权限的管理进行了加强,所以debug和release的签名文件要一致才能安装成功,要不然就会报install_failed_duplicate_permission 权限错误。
所以我们在BuildTypes中将debug和release的Signing Config选项都选择同一个签名文件,在同时安装relase和debug就不会报错了
参考文档:
http://www.tuicool.com/articles/yAZBjeA