Get小技能,Android动态切换服务器地址,再也不再烦打测试环境包调试了

  • 起源

  1. 项目中一般我们常常会在代码中写死 服务器地址,而你每次可能配合不同的后台人员使用不同的本地服务器192.168.1.xx 地址与其进行调试接口等。

  2. 烦的是每次面对不同的后台都要在代码中修改地址进行调试,这倒没什么~次数多了而且在某种情况下需要经常切换地址的时候,将会是非常浪费时间的。

某日你去后台那边拿着手机演示着:“这里有问题!XXX 怎么不行了?”
后台说:“你这是线上的?切换我本地看下?”
我TM又要跑回去座位重新编译切换地址跑一遍代码,那不很操蛋的事情么?

我经历过一次,因为打包环境的问题 ,给到测试那边,测试 OK 之后没什么问题之后,就给后台丢了个新包放至正式版服务器~

第二天上班时候专门测试了下载,OK没毛病! (当时手机连着内网WIFI没问题)

发布之后大概上午十点的样子 收到用户反馈说 网络不给力?一直无法使用,卧草TM ,瞬间心里冒冷汗 ,所有更新后新版本的用户都无法正常使用 (当然无法使用我本地的测试环境包),

这次用户量还不是很多,不过这是非常非常致命的~只能卸载重装,用户直接删了,要么重装 这差点给老板从这个项目撤下来。

好了废话太多···

  • 方法

很简单是将地址存储至SP(SharePreferences),从本地SP文件中去读取多个地址显示在列表中选择,测试过从SP中获取的速度,没有什么耗时,可行的!目前项目在使用妥妥的, 还可手动添加地址并且记录过已经添加过的地址。

  • 主要代码逻辑

这里做法是根据 版本号 versionCode 为单数就可设置切换地址的弹窗,逢双数就为线上版本不可切换,
只需要记得每次打包出去的版本号为双数,就不能手动切换地址啦~

(当然这个限制可以你自己设置,大厂的东西都是逢双是吉,正式版本 哈哈~~)

       findViewById(R.id.vServer).setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               //如果不是开放版的就显示
               if (!App.getInstance().isReleaseVersion()) {
                   new ServerSelectDialog(MainActivity.this).show();
               }
           }
       });

 双数为默认取线上,单数则取本地测试服务器
 /**
  * 双数为默认取线上,单数则取本地测试服务器
  */
public class App extends Application {
 private boolean isReleaseVersion;
    ....
    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
        //根据版本号取余数
        isReleaseVersion = (VersionUtils.getVersionCode(this) % 2 == 0);
     ...
    }
     ...
 public boolean isReleaseVersion() {
        return isReleaseVersion;
    }
}
来看下ServerSelectDialog,这里继承了BaseServerDialog你只需要这样使用即可
public class ServerSelectDialog extends BaseServerDialog {

   public ServerSelectDialog(Activity context) {
       super(context);
   }

   /**
    * @param selectedUrl 将地址设置到本地SP文件中
    */
   @Override
   protected void setServerUrl(String selectedUrl) {
       //这个SP中一般存储的是公共的参数包含服务器地址
       SP.getPublic().put(SP.server, selectedUrl);

   }

   @Override
   protected String getServerUrl() {
       return URL.getSERVER();
   }

   @Override
   protected List<String> defaultServerUrlList() {
       List<String> serverList = new ArrayList<>();
       serverList.add(URL.SERVER);
       serverList.add(URL.SERVER_BACKUP);
       serverList.add(URL.SERVER_BACKUP2);
       return serverList;
   }
}
具体你只要拿 BaseServerDialog 代码一百来行 拿下来使用就好了。
内部还简单对SharePreferences进行了封装 名称为 ShareStorage,更简便的使用SP存取用户数据
  • 地址

详细的还请移步至 GitHub 查阅使用 。
学会分享ing,慢慢来,比较快!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,479评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,019评论 4 62
  • 阶级固化也好,男女性性别要求固化也好,这都是一些现象,一些不能被否认的整个社会的现象和一个大群体的趋势,大群体的趋...
    张小猴_2016阅读 86评论 1 1
  • 北方的雪下在南方 月光洒在水中 我还没有睡觉 梦已经来到 总是呜呼哀哉 不明口吐心快 帘卷西霜 莫道是 无欲有望
    肖魁之阅读 259评论 0 1