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

Android 如何定制化开发

  •  
  •   stdying · 2018-10-12 10:54:13 +08:00 · 5806 次点击
    这是一个创建于 2015 天前的主题,其中的信息可能已经有所发展或是发生改变。
    app 不同用户有不同 UI 和功能,这些需求都要在一个 app 内完成,根据配置显示不同的效果,
    有什么好的方案,可以介绍一下
    21 条回复    2018-10-15 11:32:24 +08:00
    loshine1992
        1
    loshine1992  
       2018-10-12 10:57:53 +08:00   ❤️ 1
    stdying
        2
    stdying  
    OP
       2018-10-12 13:43:14 +08:00
    @loshine1992 只发布一个 app
    frantic
        3
    frantic  
       2018-10-12 13:53:03 +08:00
    模块化 共用同一个用户体系,然后判断用户类型跳转不同的模块
    KNOX
        4
    KNOX  
       2018-10-12 14:00:40 +08:00 via Android
    试试组件化
    james2013
        5
    james2013  
       2018-10-12 14:42:57 +08:00
    一个界面 /控件 a 有 2 种不同的 UI,a_ui 值为 0 隐藏,为 1 则显示一种 UI,为 2 则显示另外一种 UI.
    app 本身放一份默认 UI 和功能 json 配置,在首页请求网络获取当前用户对应角色的 UI 和功能配置 json.
    [{"key":"a_ui","value:1"},{"key":"b_action","value:0"}].当前配置列表有该值,则展示对应值的 UI 或功能,没有,则使用默认值.
    TommyLemon
        6
    TommyLemon  
       2018-10-12 14:45:08 +08:00
    拆分 package,然后 gradle 执行打包时对应的 package,这样可以用一个工程打出不同包名的多个 APK。

    如果真的就是同一个 APK,那除了判断配置跳到不同界面应该没有别的方法了。
    具体实现可以是原生多套 Activity、内嵌多套网页、多套插件(类似 UC 浏览器的阅读插件等)
    stdying
        7
    stdying  
    OP
       2018-10-12 14:54:49 +08:00
    @frantic 模块里面,同一个功能也会变化,包括 UI 和逻辑
    @KNOX ??
    @james2013 我们目前也是这个打算,涉及的东西很多,包括一下资源文件,后续点击事件怎么处理
    @TommyLemon 之前是打包多个 apk,现在要统一。你说的插件是指插件化吗,应用会涉及到摄像头等调用硬件的需求,不知道插件化会不会有坑
    TommyLemon
        8
    TommyLemon  
       2018-10-12 15:12:42 +08:00
    @stdying 涉及传感器的最好不要用插件,尤其是浏览器插件,可能会缺少权限,或者驱动有问题。
    xiaohei233
        9
    xiaohei233  
       2018-10-12 15:13:22 +08:00
    这样搞很容易做出很多 bug 的,还不如直接做两个 app。我们公司之前给客户做 OEM 定制,就是这样。直接用 git 拉分支,需要什么拉什么,改起来很快。
    crayygy
        10
    crayygy  
       2018-10-12 16:12:37 +08:00 via iPhone
    我们公司做的就是这种,用户一个配置文件就能搞定很多的定制化需求,但是代码写起来很痛苦的,要测试的地方太多了
    mauve
        11
    mauve  
       2018-10-12 16:23:23 +08:00
    Hybrid App 不就完事了,何止 UI 功能,操作系统都行啊
    stdying
        12
    stdying  
    OP
       2018-10-12 17:11:17 +08:00
    @xiaohei233 现在是 5 个分支,后面要做成一个。。
    @crayygy 是怎么实现,,比如一个点击事件,怎么做后续操作,跳转控制
    @mauve 估计不会
    exc
        13
    exc  
       2018-10-12 17:25:08 +08:00 via Android
    做过类似的,业务和 ui 都拆成最小粒度,然后根据不同场景(用户)组装
    crayygy
        14
    crayygy  
       2018-10-12 17:34:37 +08:00 via iPhone
    @stdying #12 有专用的 helper 来根据配置走逻辑的,维护真的有点痛苦,尽量别这么干
    akira
        15
    akira  
       2018-10-12 17:42:16 +08:00
    h5 外面套个壳?
    stdying
        16
    stdying  
    OP
       2018-10-12 17:43:29 +08:00
    @exc 差不多是这个意思
    MrStark
        17
    MrStark  
       2018-10-12 17:44:56 +08:00
    这就是这两年常说的组件化需求, 根据场景组合对应的模块.
    mmdsun
        18
    mmdsun  
       2018-10-12 20:09:10 +08:00 via Android
    我觉得两个 app 会方便一些。
    xiaohei233
        19
    xiaohei233  
       2018-10-13 09:56:36 +08:00
    @stdying 尝试使用状态模式来优化逻辑吧,不然维护起来很痛苦,后面改需求也很痛苦。
    stdying
        20
    stdying  
    OP
       2018-10-15 09:57:35 +08:00
    @xiaohei233 痛苦是小,运营要是改错了,才是特错打错
    xiaohei233
        21
    xiaohei233  
       2018-10-15 11:32:24 +08:00
    不是开发的锅就好了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3648 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:40 · PVG 18:40 · LAX 03:40 · JFK 06:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.