【发布时间】:2013-04-11 17:42:56
【问题描述】:
我目前正在开发一个 Android 框架,该框架可以将方法调用委托给服务器(运行 JVM),服务器将执行方法并返回结果,因此它可以在与著名的 Java RMI 非常相似。我们的团队还计划实现动态代码加载,这样即使它还不知道该类的实现,您也可以在服务器上执行 Android 类的方法(它会先下载对象类的定义) .
因此,我正在尝试找出在运行时将 Android 类导出到服务器的最佳方式。主要问题是 Dalvik 操作的 *.dex 文件与典型 JVM 执行的 *.class 文件具有不同的结构和处理方式。
到目前为止,我们一直在考虑指定 dx 工具在编译源代码时应该保留某些 *.class 文件。有--keep-classes 这样的选项,但它会全局保留类,而我们不需要每个类都需要*.class 文件。此外,据我所知,没有办法从 ADT Eclipse 管理 dx 工具选项。
您认为哪种方法最适合我们?
【问题讨论】:
-
也许您可以使用自定义构建步骤来构建标准 java 类文件感兴趣的文件,并将这些文件作为资产包含在 Android 构建中(以便它将它们视为数据,而不是作为要进一步转换为dex的代码)
-
直接将新代码部署到服务器而不是通过客户端肯定会更容易吗?代码库功能通常反其道而行之,将服务器端代码交付给客户端,以克服客户端部署问题。
-
@ChrisStratton:听起来像是一个计划,但我仍在寻找一些更具编程性的解决方案,这样 Android 应用程序开发人员就不需要摆弄构建设置来使事情正常进行.
-
@EJP:实际上,这是我们的想法。假设有人想提升他们的 Android 应用程序并将计算量大的计算委托给服务器。不过,这样的开发人员可能对设置自己的服务器不感兴趣 - 它可能由其他人提供。
-
因此您正在构建一个系统,您的客户可以通过该系统将可执行代码上传到第三方提供的服务器。听起来是让自己非常不受欢迎的好方法。您是否考虑过安全要求和影响?