文章背景
公司的其中一条产品线其实比较奇怪,给乙方的产品其实都是基于同一个项目,但是彼此之间又或多或少有些区别,例如:包名、图标、欢迎界面以及一部分使用场景的定制需求。
之前的解决方法:
在一个已经完工的工程下将原来做好的app
模组复制成一个新的module,再进行区别代码、文件的修改。
优点
可以共用其他module,代码在同一个工程下不需要切换。
缺点
特别明显,由于是代码的复制粘贴,若是app
部分的代码出了问题,有几个项目就要手动更新几次代码。
现在的解决方式:
在公司从svn升级到git形式的代码管理之后,新的写法在我的脑中冒出来了——
使用git的分支管理进行不同产品线的代码管理。
基础分支为master
和develop
,develop
则是开发分支,还有可能产生dev-
开头的分支,比如为了加入路由而产生的dev-router
,为了加入定位功能而产生的dev-location
。它们开发完了之后将合并入develop
分支,就可以功成身退了。为了确保具体项目分支从develop分支中以merge的方式获取公共代码更改,还有一些需要注意的点:
- 打包一个项目一般需要修改的地方有:
- data/proxy/UrlCollection.java 中的 BaseUrls
- global/AppConfig.java 中的 API_UNION_ID
- res/layout/fragment_main_page.xml 中模块的显示隐藏
- mipmap-xhdpi/ic_app.png 应用图标更改
- mipmap-xhdpi/login_hospital_logo.png 登录界面图标更改
- mipmap-xhdpi/welcome_image.png 欢迎界面更改
- 从develop引申出的具体项目命名规则遵照
省份_项目_创建日期
的规则进行分支创建 - 包名不得在分支上更改,而是在打包时更改,让分支保持从develop中merge的能力
- master分支作milestone的用途
- 为了避免merge conflict ,对develop分支中的UrlCollection/AppConfig/fragment_main_page的修改要特别慎重
- 创建一个新项目一般需要修改的地方有:
- AndroidManifest中的包名 + app/build.gradle 中的applicationId
- AppContext中的isDebug设为false
新的想法
为了满足组件化的愿景,有了以下想法:
- 多module 各归各的项目管理
- 主项目是完整的 分项目是只有代码的版本
网友评论