gwt-syncproxy - WebProject 和 Android 应用程序之间的 RPC

Posted

技术标签:

【中文标题】gwt-syncproxy - WebProject 和 Android 应用程序之间的 RPC【英文标题】:gwt-syncproxy - RPC between WebProject and Android App 【发布时间】:2013-12-02 13:48:31 【问题描述】:

我试图让我的 android 应用程序与我的 GWT WebProject (GWT 2.5.1) 进行通信...通常我从代码的角度确定了它,但我一直遇到代码导入问题...

最初,当我尝试使用 SyncProxy 从 android 项目实例化它们时,我会在 RPCService 和 RPCServiceAsync 类上得到 NoClassDefFoundError 并且它们是在 Web 项目中定义的......即使移动项目依赖于构建中的 Web 项目-path 它没有将 Web 项目代码导出到移动 apk 中...我认为这可能是因为 GWT 编译实际上将事物转换为 javascript 而不是构建 jar 但不确定...

我继续将 RPCService 和 RPCServiceAsync 文件移动到 andoird 项目,但将 RPCServiceImpl 保留在 web 项目中并切换了依赖项(即 web 项目依赖于 android )......我现在不再得到 NoClassDefFoundError 而是syncproxy 无法在类路径中找到策略文件...这是因为策略文件位于 Web 项目的 WAR 目录中...

在我看来,我错误地拆分了我的项目,我想知道最好的方法是什么?我怎样才能让 GWT 应用程序导出 rpc 策略文件和/或其 java 类?

谢谢

【问题讨论】:

【参考方案1】:

首先,您的初始设置是正确的。最好在 Web 应用程序中定义服务接口,并让您的 Android 应用程序从那里提取。我不确定您使用的是什么 IDE,但在 Eclipse 中,您要在 Build Path 对话框中使用的功能称为 Link Source。使用它,您可以将构建路径直接指向 Web 应用程序的服务接口,以使它们将与(而不是针对)Android 应用程序一起编译。

作为简要参考,请查看 SyncProxy 项目中 Android wiki 的 Setup in Eclipse 部分:https://code.google.com/p/gwt-syncproxy/wiki/Android。另请查看常见问题 wiki。 https://code.google.com/p/gwt-syncproxy/wiki/CommonIssues

需要注意的是,它的最终运行方式并不是网络应用将代码导出到 Android 项目。实际上,Android 项目会将代码从 GWT 应用程序源路径导入到它自己的源层次结构中。

关于您收到的第二个错误,即“丢失”的策略文件,请尝试在您的项目上运行 GWT 编译,并确保您的 appengine-web.xml 文件(如果使用 GAE 作为您的服务后端)已修改为在 wiki 中定义(我刚刚做了一些更新)。

最后,您可能会遇到另一个错误。由于您使用的是 GWT 2.5.1,如果您运行的不是最新版本的 SPALibrary,则可能会遇到序列化问题。我现在正在查看有关测试的反馈,并且应该可以在几个小时内在网站上下载该文件。如果针对 GWT 2.5.1 ServiceImpl 运行,请确保使用 0.4.1 Android 库。

【讨论】:

作为关于“找不到策略文件”错误的更新点,从 0.5 版开始更新 SyncProxy 以解决许多特定问题。最新版本有更多算法可以根据需要查找策略文件。【参考方案2】:

我也被这个错过了,但现在经过两天的调试。我比较清楚了。

SyncProxy 需要您拥有 GWT 项目(服务器端)的全部代码。 为此,您只需创建一个额外的类,将 SyncProxy 触发到其中。在这个类中,你应该导入所有需要的类和函数,这就是你需要服务器代码的原因。

并且必须将服务器端生成的“*.gwt.rpc”文件放到本项目的类路径中。

我认为这足以让您启动 SyncProxy。

【讨论】:

以上是关于gwt-syncproxy - WebProject 和 Android 应用程序之间的 RPC的主要内容,如果未能解决你的问题,请参考以下文章

LoginUtils gwt-syncproxy

gwt-syncproxy - WebProject 和 Android 应用程序之间的 RPC

GWT 和 Android 通信。枚举序列化问题

如何集成 GWT-RPC、Android 和 GAE?