前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >App架构经验总结(三)

App架构经验总结(三)

作者头像
Keegan小钢
发布2018-08-10 14:53:21
4900
发布2018-08-10 14:53:21
举报
文章被收录于专栏:Keegan小钢Keegan小钢Keegan小钢

原文链接:http://keeganlee.me/post/architecture/20160303 版权声明:本文刊载在《程序员》杂志2016年3期,版权归《程序员》所有,未经许可不得转载


环境分离

每个App项目,至少都会有两个环境:测试环境和生产环境。多的甚至有四个环境:开发环境、测试环境、预生产环境和生产环境。开发人员经常需要在环境之间切换,测试人员也同样。经常出现测试人员今天需要测试环境的最新版本,叫App开发人员打包一个给她,明天需要切换到生产版本,再叫App开发人员打包一个生产环境的给她。我们知道,一个App,在一台手机上要么只能是测试环境的,要么只能是生产环境的。测试人员要测试两个环境,只能不断替换不同环境的同个App,这实在太麻烦了。为了解决此问题,最好的方案就是环境分离,不同环境有不同的App。

一个App的唯一标识,Android是用包名,iOS是用Bundle Identify。那么,在一个系统想安装不同环境的App,只要每个环境App的包名和Bundle Identify不同即可。比如,生产版的包名和Bundle Identify命名为com.mydomain.myapp,测试版的包名和Bundle Identify则命名为com.mydomain.myapp.beta,这样,Android和iOS都会识别为两个不同的App了。

不过,只改包名和Bundle Identify是不够的,应用图标和应用名称也要修改,不然安装之后很难区分哪个App是哪个环境的。一般做法就是,非生产环境的App图标就是在生产图标的基础上添加一个环境标签,同时App的应用名称也是在生产的基础上添加环境后缀名。另外,因为包名和Bundle Identify不同了,微信、微博、百度地图等这些第三方平台也都需要为不同环境的App分别申请不同的appID。

实现上,最笨的方法就是拷贝当前工程,然后修改,缺陷很明显,维护成本很高。不过,好在Android和iOS都有很方便的修改方式。

Android有了Gradle,可以设置多个不同的Flavors,每个Flavor都有一个applicationId属性,其实就是App的包名。比如,生产版和测试版的设置如下:

productFlavors {
    myapp {
        applicationId "com.mydomain.myapp"
    }
    myappBeta {
        applicationId 'com.mydomain.myapp.beta'
    }
}

这样,其实就有两个App了。然后,源代码新建一个和main同级的目录,命名为myappBeta,然后,将图标、名称和第三方设置之类的,和main保持一样的位置、文件名、属性等,就可以替换成环境相关的了。

iOS则可以通过创建多个环境的Target来实现环境分离,不同Target可以设置不同的Bundle Identify、Bundle display name、更换图标。另外,每个Target也各自有自己的一份plist文件的,环境变量和第三方设置之类的,都可以设置在相应的plist文件里。

写在最后

至此,关于App架构方面的经验总结就先讲这么多了。其中,部分内容在我以往的博客上也已经有所体现,有兴趣的读者可以前往我的博客了解并欢迎参与讨论

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Keegan小钢 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境分离
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档