美文网首页
基于同份代码不同产品线的解决办法

基于同份代码不同产品线的解决办法

作者: 小呀么小黄鸡 | 来源:发表于2017-04-17 10:29 被阅读74次

文章背景

公司的其中一条产品线其实比较奇怪,给乙方的产品其实都是基于同一个项目,但是彼此之间又或多或少有些区别,例如:包名、图标、欢迎界面以及一部分使用场景的定制需求。

之前的解决方法:

在一个已经完工的工程下将原来做好的app模组复制成一个新的module,再进行区别代码、文件的修改。
优点
可以共用其他module,代码在同一个工程下不需要切换。
缺点
特别明显,由于是代码的复制粘贴,若是app部分的代码出了问题,有几个项目就要手动更新几次代码。

现在的解决方式:

在公司从svn升级到git形式的代码管理之后,新的写法在我的脑中冒出来了——
使用git的分支管理进行不同产品线的代码管理。

基础分支为masterdevelopdevelop则是开发分支,还有可能产生dev-开头的分支,比如为了加入路由而产生的dev-router,为了加入定位功能而产生的dev-location。它们开发完了之后将合并入develop分支,就可以功成身退了。为了确保具体项目分支从develop分支中以merge的方式获取公共代码更改,还有一些需要注意的点:

  • 打包一个项目一般需要修改的地方有:
  1. data/proxy/UrlCollection.java 中的 BaseUrls
  2. global/AppConfig.java 中的 API_UNION_ID
  3. res/layout/fragment_main_page.xml 中模块的显示隐藏
  4. mipmap-xhdpi/ic_app.png 应用图标更改
  5. mipmap-xhdpi/login_hospital_logo.png 登录界面图标更改
  6. mipmap-xhdpi/welcome_image.png 欢迎界面更改
  • 从develop引申出的具体项目命名规则遵照省份_项目_创建日期的规则进行分支创建
  • 包名不得在分支上更改,而是在打包时更改,让分支保持从develop中merge的能力
  • master分支作milestone的用途
  • 为了避免merge conflict ,对develop分支中的UrlCollection/AppConfig/fragment_main_page的修改要特别慎重
  • 创建一个新项目一般需要修改的地方有:
  1. AndroidManifest中的包名 + app/build.gradle 中的applicationId
  2. AppContext中的isDebug设为false

新的想法

为了满足组件化的愿景,有了以下想法:

  1. 多module 各归各的项目管理
  2. 主项目是完整的 分项目是只有代码的版本

相关文章

网友评论

      本文标题:基于同份代码不同产品线的解决办法

      本文链接:https://www.haomeiwen.com/subject/jszvgttx.html