前段时间发版app出现了问题,app上的服务器链接竟然是测试服务器的链接,这让我很尴尬。
        因为每次正式和测试服务器的切换都是手动替换的,所以才会出现这种问题,然后我就在想能不能根据release和debug来进行切换正式和测试的服务器链接。最后研究出结果,在这里记录。

正式和测试的代码是在build.gradle中实现的。

def Base_Url = "\"http://正式服务器/\""  //斜杠必须得加,为了让java代码识别这是String类型
def CBase_Url = "\"http://测试服务器/\""
def Base_UM = "baidu"
android {
//中间省略若干代码buildTypes {release {//混淆minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//密钥直接run生效signingConfig signingConfigs.release//正式,其中“BASE_URL”为Java中引用的字段buildConfigField "String", "BASE_URL",  Base_Url//友盟来源设置,如果你接了友盟manifestPlaceholders = [umeng_app_key: Base_UM]}debug {//混淆minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//密钥直接run生效signingConfig signingConfigs.release//测试buildConfigField "String", "BASE_URL", CBase_UrlmanifestPlaceholders = [umeng_app_key: "ceshi"]}}//自动生成指定名称的release发布版的 apk文件android.applicationVariants.all { variant ->def appNameif(variant.buildType.name.equals('release')){//在正式模式下,再根据服务器链接来判断是否为正式服务器if(Base_Url.contains("api")){if(Base_UM.equals("guanwang")){appName = "NameV"+defaultConfig.versionName}else{appName = "Name-"+Base_UM+"V"+defaultConfig.versionName}}else if(Base_Url.contains("sixsix")){appName = "测试_V"+defaultConfig.versionName}else {appName = "未知_V"+defaultConfig.versionName}} else {appName = "测试"}
//        if(variant.buildType.name.equals('release')){
//        } else {
//        }variant.outputs.all { output ->outputFileName = "${appName}.apk"}}
}

在java中引用BASE_URL:
String BASE_URL = BuildConfig.BASE_URL;

在AndroidManifest.xml中引用友盟来源

<meta-data android:value="${umeng_app_key}" android:name="UMENG_CHANNEL"/>

最后的那个自动生成apk,是为了更加方便。因为要生成不同来源的apk进行上传,为了不用每次生成改名字,直接这么生成名字。

关于Android app正式版本和测试版本的切换相关推荐

  1. Android APP通过浏览器下载最新版本

    Android APP通过浏览器下载最新版本 首先判断app本地的版本和服务器上的版本是否是一样的.如果有新版本,那么就进行更新. 需要服务器端提供两个接口 获取服务器端apk版本号 apk地址 1. ...

  2. android fragment界面滑动切换效果,Android App中使用ViewPager+Fragment实现滑动切换效果...

    在android应用中,多屏滑动是一种很常见的风格,没有采用viewpager的代码实现会很长,如果采用ViewPager,代码就会短很多,但是使用ViewPager也有弊端:需要导入android- ...

  3. Android APP性能及专项测试(个人整理)

    Android性能测试分为两类: 1.一类为rom版本(系统)的性能测试 2.一类为应用app的性能测试 Android的app性能测试包括的测试项比如: 1.资源消耗 2.内存泄露 3.电量功耗 4 ...

  4. Android APP性能及专项测试(学习笔记)

    1. 性能测试 Android性能测试分为两类: 1.一类为rom版本(系统)的性能测试 2.一类为应用app的性能测试 Android的app性能测试包括的测试项比如: 1.资源消耗 2.内存泄露 ...

  5. Android app 性能测试以及专项测试

    1. 性能测试 Android性能测试分为两类: 1.一类为rom版本(系统)的性能测试 2.一类为应用app的性能测试 Android的app性能测试包括的测试项比如: 1.资源消耗 2.内存泄露 ...

  6. Android APP性能及专项测试

    Android篇 1. 性能测试 Android性能测试分为两类: 1.一类为rom版本(系统)的性能测试 2.一类为应用app的性能测试 Android的app性能测试包括的测试项比如: 1.资源消 ...

  7. 【转】Android APP性能及专项测试(个人整理)

    转载地址:https://www.zybuluo.com/defias/note/592309 Android篇 1. 性能测试 Android性能测试分为两类:  1.一类为rom版本(系统)的性能 ...

  8. app功耗测试软件,Android app专项测试之耗电量测试

    前言 耗电量指标 待机时间成关注目标 提升用户体验 通过不同的测试场景,找出app高耗电的场景并解决 01需要的环境准备 1.python2.7(必须是2.7,3.X版本是不支持的) 2.golang ...

  9. Android app专项测试之耗电量测试

    00 前言 耗电量指标 待机时间成关注目标 提升用户体验 通过不同的测试场景,找出app高耗电的场景并解决 01 需要的环境准备 1.python2.7(必须是2.7,3.X版本是不支持的) 2.go ...

最新文章

  1. 研究你为啥看着淘宝想剁手,阿里达摩院论文登上NeurIPS 2019
  2. AgileGAN130毫秒生成动漫肖像!LeCun点赞:超越梵高
  3. 改善代码设计 —— 总结篇(Summary)
  4. voip 音频采集时间_数字音频基础------从PCM说起
  5. 左神算法:判断二叉树是否为平衡二叉树(树形dp套路,Java版)
  6. 计算机网络【1】物理层
  7. NuGet是什么?理解与使用(下)
  8. OAuth和OpenID的区别(转)
  9. 您可能在2017年期待JavaScript会议
  10. Ubuntu 平滑升级到PHP7
  11. CGI form标签学习
  12. 数据中心的供配电系统
  13. 【论文学习之SNE-RoadSeg】跑通SNE-RoadSeg代码
  14. 十个步骤带你了解TAPD——TAPD教程
  15. 如何推动数字经济新时代产业转型升级
  16. kodi android 卡顿,解决KODI v17/16在电视上不能打开4K播放卡顿的问题
  17. 【CV】FPN:用于目标检测的特征金字塔网络
  18. DAY12 计蒜客 有趣的数字 爬楼梯 七巧板
  19. 计算机辅助制造题库选择题,《机械设计基础习题库
  20. 中国联通公司与中国移动的差别,就在这!

热门文章

  1. W05 - 999、云小蜜人工智能训练师
  2. 一套完整的微信公众号代运营方案
  3. 软考信息系统项目管理师论质量管理范文
  4. ros1-gazebo创建世界和机器人模型(单线雷达、多线雷达、相机)
  5. .Net 垃圾回收机制原理(一)
  6. FFmpeg av_dump_format输出的tbn、tbc、tbr、PAR、DAR的含义
  7. 【SAP业务模式】之STO(二):系统配置
  8. 【转】windows安装jira
  9. 怎么防抄板:从保护固件与安全认证开始
  10. Oracle 常用工具和问题分析