有人尝试过使用MessagePack
Android应用程序吗?
可能吗?我试图从中使用Jar,msgpack-java
并收到以下异常:
Caused by: java.lang.ExceptionInInitializerError
at org.msgpack.Packer.pack(Packer.java:532)
at org.msgpack.MessagePack.pack(MessagePack.java:31)
... 15 more
Caused by: java.lang.ExceptionInInitializerError
at org.msgpack.template.TemplateRegistry.<clinit>(TemplateRegistry.java:38)
... 17 more
Caused by: java.lang.VerifyError: org.msgpack.template.BeansFieldEntryReader
at org.msgpack.template.builder.BeansTemplateBuilder.<init (BeansTemplateBuilder.java:42)
at org.msgpack.template.builder.BuilderSelectorRegistry.initForJava(BuilderSelectorRegistry.java:73)
at org.msgpack.template.builder.BuilderSelectorRegistry.<clinit>(BuilderSelectorRegistry.java:38)
... 18 more
我使用的代码非常简单
PrintWriter out = new PrintWriter(socket.getOutputStream());
Message msg = new Message();
msg.body = "asdasdasd";
msg.from = "qwe";
msg.to = "ttt";
byte[] bytes = MessagePack.pack(msg);
out.print(bytes);
out.flush();
我有javassist.jar
,msgpack-0.5.2.jar
,slf4j-api-1.6.2.jar
和slf4j-jdk14-1.6.2.jar
在我的lib
目录中。
在我的服务器应用程序中,此代码可以在相同的库中正常工作。
msgpack :0.6.8
可在Android上正常使用
msgpack-rpc :0.7.0
适用于Android,但有一个警告。
具体来说,您需要onCreate
为API级别8(Android 2.2.1)添加以下内容,并且可能更低:
java.lang.System.setProperty("java.net.preferIPv4Stack", "true");
java.lang.System.setProperty("java.net.preferIPv6Addresses", "false");
由于这个错误。
如果您想看一个简单的示例,下面是为此目的设置的两个项目:
更新:从0.6.7开始, msgpack应该与Android兼容(存在一个小的依赖项排除问题)。检查以下文本以获取msgpack-
rpc(将来可能还会改编)。
注意:如果您还使用 msgpack-rpc ,则需要执行以下步骤:
该 NettyEventLoop 更换是由于这个问题:
http://markmail.org/message/ypa3nrr64kzsyfsa
。
重要提示: 我仅测试了 同步 通信。异步可能不起作用。
这是msgpack在以下版本之前无法与Android配合使用的原因0.6.7
:
发生错误的原因是MessagePack使用了Android SDK中未包含的几个java.beans类。您可能正在使用 MessagePackBeans
批注。
这是一个类似的问题所描述的一个这里,为此,一般的解决方案中概述这里。不幸的是,在我们的情况下,它需要重建msgpack。这就是我所做的(几乎可以肯定,您可以跳过第5步和第8步,但是我还没有尝试过):
那应该做。使用您的示例代码和我自己的数据类,我能够成功打包和解压缩数据。
整个重命名仪式归因于DEX编译器抱怨java。*包命名的事实。
我有一些用RNCryptor加密的图像文件,我想对它们进行解密,并将它们用作框架布局的背景。我浏览了示例文件,但我的应用程序force在一段时间后关闭,没有显示任何图像。我使用JNCryptor库 我将加密图像放入raw文件夹,如下所示: 这是我活动中的代码: 这个文件可以很好地iOS这个代码: 这里是logcat输出: 08-2819:52:11.720:E/AndroidRuntime(106
我想实现与以下2个请求旋转: 1。在显示选择项列表时,文本如下图所示左对齐。4. 2。在选择一个项目后,我想让所选的一个显示右对齐,如下图所示。 我的旋转器布局旋转器布局如下: 和适配器的getView如下所示: 但是,如果将行改为. 将显示为picture.3和picture.4. 如何修改以同时到达picture.1和picture.4?
问题内容: 在浏览Android WebView文档时遇到了ServiceWorkerController,并决定尝试一下。不幸的是,我无法截获任何电话。我知道WebViewClient.shouldInterceptRequest,但有兴趣了解有关ServiceWorkerController的更多信息。不幸的是,这些文档比我下面已经实现的稀疏。任何帮助,将不胜感激。 我整理了一个由单个Acti
问题内容: 有没有人有关于在SQLite中从Android上的libGDX存储数据的任何提示。我对Android SDK中使用的技术非常熟悉,但是我不知道如何从libGDX调用这些Android数据库函数。我知道从libGDX调用函数会使我的游戏无法在桌面上使用,但是我可以解决这个问题。 问题答案: 一种方法总是在您的主项目中创建一个界面,我们称它为。然后,让桌面和Android应用程序/活动都实
问题内容: 我在Android的OpenGL-ES 3.0中使用的工作代码如下所示: 我的问题是在第三行上将结果转换为to 。被声明为返回一个: 在我的测试平台上,该函数返回的子类,因此强制转换有效,但对于支持OpenGL-ES 3+的所有平台或Android版本进行此假设似乎并不十分安全。尽管看起来很合理,但我还没有找到任何可以保证它的文档,如果可以保证,似乎应该将该函数声明为returning
问题内容: 我正在尝试在Android的Java应用程序中使用Mozilla Rhino 评估一些JavaScript。我正在使用Eclipse + ADT插件。 首先,我尝试仅从Mozilla的网站下载Rhino .jar文件,并将其作为Eclipse中的库添加到项目中。Eclipse很好地识别了它并编译了该应用程序。但是,在运行它时,调用时会出现异常(有关堆栈跟踪,请参见下文)。 然后,我尝试