Android 同一个项目多个不同的包名用 git 怎么管理方便一些呢?

2019-09-10 19:12:52 +08:00
 kuzhan

目前 APP 有三个不同的包名,

三个 APP 也有些地方不一样,

首页,第三方登录,支付,颜色,图标,启动图,版本号,渠道号。

之前用 git 分支处理不同的包,但是这样发现有时候修改其中一个包 bug 的时候会造成,代码不同步了。

然后每次新增功能的时候每个包要重新搞一遍,非常的麻烦!

大家都是这么处理的呢?

11493 次点击
所在节点    Android
18 条回复
airmour
2019-09-10 19:28:32 +08:00
多渠道打包了解一下
LokiSharp
2019-09-10 19:31:53 +08:00
Gradle 多项目了解一下
xiangyuecn
2019-09-10 19:35:36 +08:00
把当前 app 改成 library,多个 application 引用这个 library,配置、图标什么的 application 中的自动会覆盖 library 中的。因此实际的 app module 源码内只有几个配置和图标,没有一点程序代码。目前我是这么干的😏
eminemcola
2019-09-10 19:36:31 +08:00
这种情况不建议用 Git 分支管理,Build Type + Build Flavor 是被设计来满足这类需求的。

楼主可以在搜索引擎检索关键字:Build Variants,Google 官方文档里也能找到详细介绍。
kuzhan
2019-09-11 08:47:20 +08:00
@airmour 这不是多渠道的事了 多渠道就一个渠道号的事情 我这是多个包名
mrtrying
2019-09-11 09:40:36 +08:00
主要是包名的问题吧!我是用了比较笨的办法
有一个公共功能的主要分支,公共的业务功能在这个分支开发
然后创建了不通包名的分支单独修改不同的逻辑
但是,还有有坑,一但其中一个项目继续开发,其他的不开发就坑爹了
airmour
2019-09-11 10:00:27 +08:00
kuzhan
2019-09-11 10:10:09 +08:00
@airmour 每个包之间还有很多不同的地方啊 如果仅仅是包名就好解决了 打包之前批量替换一下就 OK 了!
kuzhan
2019-09-11 10:11:43 +08:00
@mrtrying 就是这个问题啊 每次打包都头疼
yukiww233
2019-09-11 10:19:39 +08:00
@kuzhan #9 多渠道支持每个渠道配置替换代码代码,资源,依赖
haohh
2019-09-11 11:14:17 +08:00
多渠道打包啊 很多都是这样做的
你说的这些内容也是不同渠道请求不同接口动态下发配置加载
首页,第三方登录,支付,颜色,图标,启动图,版本号,渠道号。
unco020511
2019-09-11 17:06:30 +08:00
楼上没说太清楚.
productFlavors 可以为不同的包配置不同的资源路径,包括 java 代码,资源等等;就是还是一个 project,但是你可以为每个包建一个文件夹,然后在 gradle 中配置路径,gradle 在构建的时候差异化的部分就会来这个文件夹下找,非差异化的部分就在默认 src(resourc)下找;
remiver
2019-09-11 17:20:19 +08:00
渠道通过 productFlavors 配置, 渠道间的代码和资源差异通过 SourceSets 指定, 文档都有详细说明的
mrtrying
2019-09-11 17:34:50 +08:00
@kuzhan 打包的话,你可以自己写脚本来打包每个分支的包,完全可以把这个流程自动化
顺便学习一下 shell 或者 python,go 也可以
kuzhan
2019-09-12 22:31:06 +08:00
@mrtrying 打包倒不是问题 现在的问题是每个分支的代码都不一样,
因为不同的包功能不一样,代码没办法同步,不同的包升级功能,修复 bug 有时候每个包都要去改。。。
no1xsyzy
2019-09-12 23:16:01 +08:00
@kuzhan 把相同的代码提取出来做成库啊……
程序员基础,SICP 都拿了一个小节专门讲这个
xierbenq
2019-09-14 14:09:34 +08:00
lz 想表达的重点在于业务逻辑上的差异吧,其他诸如包名,资源文件等都可以用 buildvariant 来解决。这种情况要结合公司实际业务来寻找方法。如果是项目稳定后一般不做修改的,那直接分仓库吧,类似外包。如果是需要一直迭代,共享修改的,我目前是业务做在一起,做一个配置文件来控制开关。至于开分支是万不可取的,合并导致的代码错乱和处理冲突会生不如死
winterbells
2019-09-14 16:00:48 +08:00
@mrtrying flavor 也可以改包名。
我们现在的项目就是这么搞的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/599751

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX