6

我正在开发一个使用 OpenMRS 作为 Android 后端的医疗记录系统。OpenMRS 依赖于一些重量级的库,包括 Hibernate 和 Spring。

“Dexing”整个 OpenMRS 应用程序会生成一个对于 Android classes.dex 文件格式来说太大的文件(这个大小限制已经有据可查)。为了解决这个问题,我目前正在从依赖项创建多个 dex 文件,并在运行时使用 Android 的 dex 类加载器加载它们。

由于实际使用服务器的移动版本的方式,尽管存在巨大的依赖关系,但实际处理需求将非常低。我不想在这里在我的手机上运行企业服务器。

在我花费数周的时间尝试设计这个之前,我只想问开发者社区:这个策略只是一个白日梦吗?如果我加载所有这些库,整个二进制文件会被加载到 RAM 中并破坏系统吗?有没有优化这样一个应用程序的好方法?我在这里缺少一些明显的问题或解决方案吗?

4

1 回答 1

1

简短的回答是:不要。

长答案是大多数设备仍然只为每个堆分配相对少量的内存(40-128 兆 RAM 之间)。您真的真的需要考虑构建应用程序,以便大部分逻辑以及库和重量级代码仍然驻留在服务器上,而移动应用程序只是从服务器读取轻量级数据(JSON?)进行显示。设备实际上应该只使用诸如位置数据之类的本机项目,并为用户提供与 Android 世界其他部分一致的界面。除此之外,您应该寻找方法尽可能多地保留原生应用程序之外的逻辑。如果没有其他原因,只是为了让它更安全。逆向工程 Android 应用程序是微不足道的,您在服务器端保留的越多,您就越安全。

于 2011-09-12T20:53:55.173 回答