Android 如何定制化开发

2018-10-12 10:54:13 +08:00
 stdying
app 不同用户有不同 UI 和功能,这些需求都要在一个 app 内完成,根据配置显示不同的效果,
有什么好的方案,可以介绍一下
10040 次点击
所在节点    Android
21 条回复
loshine1992
2018-10-12 10:57:53 +08:00
stdying
2018-10-12 13:43:14 +08:00
@loshine1992 只发布一个 app
frantic
2018-10-12 13:53:03 +08:00
模块化 共用同一个用户体系,然后判断用户类型跳转不同的模块
KNOX
2018-10-12 14:00:40 +08:00
试试组件化
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
2018-10-12 14:45:08 +08:00
拆分 package,然后 gradle 执行打包时对应的 package,这样可以用一个工程打出不同包名的多个 APK。

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

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

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

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

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

© 2021 V2EX