目前 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 
                    
                    manus   OP @mrtrying 打包倒不是问题 现在的问题是每个分支的代码都不一样, 
                因为不同的包功能不一样,代码没办法同步,不同的包升级功能,修复 bug 有时候每个包都要去改。。。  | 
            
     17 
                    
                    xierbenq      2019-09-14 14:09:34 +08:00 via iPhone 
                    
                    lz 想表达的重点在于业务逻辑上的差异吧,其他诸如包名,资源文件等都可以用 buildvariant 来解决。这种情况要结合公司实际业务来寻找方法。如果是项目稳定后一般不做修改的,那直接分仓库吧,类似外包。如果是需要一直迭代,共享修改的,我目前是业务做在一起,做一个配置文件来控制开关。至于开分支是万不可取的,合并导致的代码错乱和处理冲突会生不如死 
                 |