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");
由于这个错误。
如果您想看一个简单的示例,下面是为此目的设置的两个项目:
- https://github.com/mikkoz/msgpack-android-test-server/tree/master/msgpack-android-test-server
- https://github.com/mikkoz/msgpack-android-test-client/tree/master/msgpack-android-test-client
之前的版本
更新:从0.6.7开始, msgpack应该与Android兼容(存在一个小的依赖项排除问题)。检查以下文本以获取msgpack-
rpc(将来可能还会改编)。
注意:如果您还使用 msgpack-rpc ,则需要执行以下步骤:
- 从 _git://github.com/msgpack/msgpack-rpc.git_ (特别是 “ java”文件夹 )下载msgpack-rpc源。
- 将主要msgpack工件版本更改为您已构建的版本。
- 在 org.msgpack.rpc.loop.netty.NettyEventLoop中 ,将 NioClientSocketChannelFactory 更改为 OioClientSocketChannelFactory(getWorkerExecutor()) 。
- 以与主MessagePack JAR相同的方式构建MessagePack-RPC(请参阅上面的 步骤11 )。
该 NettyEventLoop 更换是由于这个问题:
http://markmail.org/message/ypa3nrr64kzsyfsa
。
重要提示: 我仅测试了 同步 通信。异步可能不起作用。
这是msgpack在以下版本之前无法与Android配合使用的原因0.6.7
:
发生错误的原因是MessagePack使用了Android SDK中未包含的几个java.beans类。您可能正在使用 MessagePackBeans
批注。
这是一个类似的问题所描述的一个这里,为此,一般的解决方案中概述这里。不幸的是,在我们的情况下,它需要重建msgpack。这就是我所做的(几乎可以肯定,您可以跳过第5步和第8步,但是我还没有尝试过):
- 从 https://github.com/msgpack/msgpack-java.git 下载MessagePack源。
- 将MessagePack源作为项目导入到IDE中。
- 从 http://svn.apache.org/repos/asf/harmony/enhanced/java/trunk/classlib/modules/beans/src/main/java 下载相关软件包的Apache Harmony源。
- 将这些包复制到MessagePack项目的 src / main / java 文件夹中:
- java.beans
- java.beans.beancontext
- org.apache.harmony.beans
- org.apache.harmony.beans.internal.nls
- 在您的MessagePack项目中,删除以下类:
- PropertyChangeListener
- IndexedPropertyChangeEvent
- PropertyChangeEvent
- PropertyChangeListenerProxy
- 物业变更支持
- 将 java.beans 包重命名为其他名称,例如 custom.beans 。
- 将 所有 java.beans 引用更改为重命名的ID,然后再次更改,例如 custom.beans 。这 尤其 适用于 BeansFieldEntryReader (此类是原始错误的原因)。
- 将在 步骤5中* 删除的五个类的 custom.beans 引用更改回 java.beans 。 * __
- 在 org.apache.harmony.beans.internal.nls.Messages 类中,注释掉 setLocale 方法,并删除与之关联的导入。
- 删除所有仍然有错误的类, 但 Enprer 除外 。在该类中,注释掉对已删除类的所有引用。您现在应该有一个没有错误的项目。
- 构建MessagePack JAR:
- 如果您使用的是Maven,请将pom.xml中的版本更改为唯一的版本,运行具有 安装 目标的Maven build ,然后 使用该版本 在您的Android项目中添加依赖项。
- 如果您 不 使用Maven,则必须使用随附的 build.xml 为Ant 运行 jar 目标。用这个替换您的Android项目中的msgpack JAR。 __
- 如果要发布应用程序,请记住包括有关Apache Harmony的相关法律声明。就像MessagePack一样,这是Apache许可。
那应该做。使用您的示例代码和我自己的数据类,我能够成功打包和解压缩数据。
整个重命名仪式归因于DEX编译器抱怨java。*包命名的事实。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)