目前 APP 有三个不同的包名,
三个 APP 也有些地方不一样,
首页,第三方登录,支付,颜色,图标,启动图,版本号,渠道号。
之前用 git 分支处理不同的包,但是这样发现有时候修改其中一个包 bug 的时候会造成,代码不同步了。
然后每次新增功能的时候每个包要重新搞一遍,非常的麻烦!
大家都是这么处理的呢?
1
airmour 2019-09-10 19:28:32 +08:00
多渠道打包了解一下
|
2
LokiSharp 2019-09-10 19:31:53 +08:00 via iPhone
Gradle 多项目了解一下
|
3
xiangyuecn 2019-09-10 19:35:36 +08:00
把当前 app 改成 library,多个 application 引用这个 library,配置、图标什么的 application 中的自动会覆盖 library 中的。因此实际的 app module 源码内只有几个配置和图标,没有一点程序代码。目前我是这么干的😏
|
4
eminemcola 2019-09-10 19:36:31 +08:00
这种情况不建议用 Git 分支管理,Build Type + Build Flavor 是被设计来满足这类需求的。
楼主可以在搜索引擎检索关键字:Build Variants,Google 官方文档里也能找到详细介绍。 |
6
mrtrying 2019-09-11 09:40:36 +08:00
主要是包名的问题吧!我是用了比较笨的办法
有一个公共功能的主要分支,公共的业务功能在这个分支开发 然后创建了不通包名的分支单独修改不同的逻辑 但是,还有有坑,一但其中一个项目继续开发,其他的不开发就坑爹了 |
7
airmour 2019-09-11 10:00:27 +08:00
@kuzhan #5 一句两句说不清看图吧 https://i.loli.net/2019/09/11/LkgmdtFrNMyKVjI.png
|
11
haohh 2019-09-11 11:14:17 +08:00
多渠道打包啊 很多都是这样做的
你说的这些内容也是不同渠道请求不同接口动态下发配置加载 首页,第三方登录,支付,颜色,图标,启动图,版本号,渠道号。 |
12
unco020511 2019-09-11 17:06:30 +08:00
楼上没说太清楚.
productFlavors 可以为不同的包配置不同的资源路径,包括 java 代码,资源等等;就是还是一个 project,但是你可以为每个包建一个文件夹,然后在 gradle 中配置路径,gradle 在构建的时候差异化的部分就会来这个文件夹下找,非差异化的部分就在默认 src(resourc)下找; |
13
remiver 2019-09-11 17:20:19 +08:00
渠道通过 productFlavors 配置, 渠道间的代码和资源差异通过 SourceSets 指定, 文档都有详细说明的
|
14
mrtrying 2019-09-11 17:34:50 +08:00
@kuzhan 打包的话,你可以自己写脚本来打包每个分支的包,完全可以把这个流程自动化
顺便学习一下 shell 或者 python,go 也可以 |
15
kuzhan OP @mrtrying 打包倒不是问题 现在的问题是每个分支的代码都不一样,
因为不同的包功能不一样,代码没办法同步,不同的包升级功能,修复 bug 有时候每个包都要去改。。。 |
17
xierbenq 2019-09-14 14:09:34 +08:00 via iPhone
lz 想表达的重点在于业务逻辑上的差异吧,其他诸如包名,资源文件等都可以用 buildvariant 来解决。这种情况要结合公司实际业务来寻找方法。如果是项目稳定后一般不做修改的,那直接分仓库吧,类似外包。如果是需要一直迭代,共享修改的,我目前是业务做在一起,做一个配置文件来控制开关。至于开分支是万不可取的,合并导致的代码错乱和处理冲突会生不如死
|
18
winterbells 2019-09-14 16:00:48 +08:00 via Android
@mrtrying flavor 也可以改包名。
我们现在的项目就是这么搞的 |