首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Android

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

  •  
  •   kuzhan · 86 天前 · 1836 次点击
    这是一个创建于 86 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    大家都是这么处理的呢?

    18 回复  |  直到 2019-09-14 16:00:48 +08:00
        1
    airmour   86 天前
    多渠道打包了解一下
        2
    LokiSharp   86 天前 via iPhone
    Gradle 多项目了解一下
        3
    xiangyuecn   86 天前
    把当前 app 改成 library,多个 application 引用这个 library,配置、图标什么的 application 中的自动会覆盖 library 中的。因此实际的 app module 源码内只有几个配置和图标,没有一点程序代码。目前我是这么干的😏
        4
    eminemcola   86 天前
    这种情况不建议用 Git 分支管理,Build Type + Build Flavor 是被设计来满足这类需求的。

    楼主可以在搜索引擎检索关键字:Build Variants,Google 官方文档里也能找到详细介绍。
        5
    kuzhan   85 天前
    @airmour 这不是多渠道的事了 多渠道就一个渠道号的事情 我这是多个包名
        6
    mrtrying   85 天前
    主要是包名的问题吧!我是用了比较笨的办法
    有一个公共功能的主要分支,公共的业务功能在这个分支开发
    然后创建了不通包名的分支单独修改不同的逻辑
    但是,还有有坑,一但其中一个项目继续开发,其他的不开发就坑爹了
        7
    airmour   85 天前
        8
    kuzhan   85 天前
    @airmour 每个包之间还有很多不同的地方啊 如果仅仅是包名就好解决了 打包之前批量替换一下就 OK 了!
        9
    kuzhan   85 天前
    @mrtrying 就是这个问题啊 每次打包都头疼
        10
    yukiww233   85 天前
    @kuzhan #9 多渠道支持每个渠道配置替换代码代码,资源,依赖
        11
    haohh   85 天前
    多渠道打包啊 很多都是这样做的
    你说的这些内容也是不同渠道请求不同接口动态下发配置加载
    首页,第三方登录,支付,颜色,图标,启动图,版本号,渠道号。
        12
    unco020511   85 天前
    楼上没说太清楚.
    productFlavors 可以为不同的包配置不同的资源路径,包括 java 代码,资源等等;就是还是一个 project,但是你可以为每个包建一个文件夹,然后在 gradle 中配置路径,gradle 在构建的时候差异化的部分就会来这个文件夹下找,非差异化的部分就在默认 src(resourc)下找;
        13
    remiver   85 天前
    渠道通过 productFlavors 配置, 渠道间的代码和资源差异通过 SourceSets 指定, 文档都有详细说明的
        14
    mrtrying   85 天前
    @kuzhan 打包的话,你可以自己写脚本来打包每个分支的包,完全可以把这个流程自动化
    顺便学习一下 shell 或者 python,go 也可以
        15
    kuzhan   84 天前
    @mrtrying 打包倒不是问题 现在的问题是每个分支的代码都不一样,
    因为不同的包功能不一样,代码没办法同步,不同的包升级功能,修复 bug 有时候每个包都要去改。。。
        16
    no1xsyzy   84 天前
    @kuzhan 把相同的代码提取出来做成库啊……
    程序员基础,SICP 都拿了一个小节专门讲这个
        17
    xierbenq   82 天前 via iPhone
    lz 想表达的重点在于业务逻辑上的差异吧,其他诸如包名,资源文件等都可以用 buildvariant 来解决。这种情况要结合公司实际业务来寻找方法。如果是项目稳定后一般不做修改的,那直接分仓库吧,类似外包。如果是需要一直迭代,共享修改的,我目前是业务做在一起,做一个配置文件来控制开关。至于开分支是万不可取的,合并导致的代码错乱和处理冲突会生不如死
        18
    winterbells   82 天前 via Android
    @mrtrying flavor 也可以改包名。
    我们现在的项目就是这么搞的
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1508 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 26ms · UTC 17:04 · PVG 01:04 · LAX 09:04 · JFK 12:04
    ♥ Do have faith in what you're doing.