安卓上使用2.0 API的Couchdb

4
我正在进行一个Android项目,想法很简单:只需要记录按钮按下的时间。这部分很简单。
问题在于我需要实时同步数据(或者至少具有非常可接受的延迟<=5s)。而且设备可能会失去连接,因此我们还需要使该应用离线工作。
为了实现这一点,我需要复制数据,couchdb似乎提供了这个功能。
所以,我开始测试一些例子: 但是,其中没有一个似乎能够与this instructions一起使用。我的意思是它可以工作,使apk文件工作,安装成功,但当应用程序启动时,它会继续运行并且什么都不做。
我知道Android上的CouchDB是以以下方式工作的:
- 安装一个服务,即CouchDB,因此几个应用程序可以使用此服务。 - 我的Android应用程序需要使用API来处理此CouchDB服务,通过进行POST、GET、PUT等请求。
我的问题是:
- 如何使用2.0 API使上述示例正常工作?
更新:
可能相关的链接:https://groups.google.com/group/mobile-couchbase/browse_thread/thread/83816c0d0f1b050b 更新2:
看起来问题是CPU版本,我拥有的所有平板电脑都是armv5。
Bug相关: http://www.couchbase.org/issues/browse/CBMA-13 我还没有在arm7v的CPU上测试过,但我会在几个小时内进行测试。
更新3:
我已经测试了两次应用程序,但仍然无法使用(ARM)armeabi-7va。
更新4:
我在多个设备上测试了移动futon示例:
- arm5v:测试失败(模拟器和真实设备),应用市场和自己构建。 - arm6v:测试失败(真实设备),应用市场和自己构建。 - arm7v:测试失败(模拟器),应用市场和自己构建。
它以如此多的方式失败,让我感到非常沮丧。即使我成功在arm5v上运行couchdb,我也必须处理这些主要错误1 2

你需要聚焦你的问题。 - Kurtis Nusbaum
1个回答

3
我们在一个重要的项目中也在Android上使用CouchDB。这两个错误是我报告的,但不幸的是它们仍未修复。尽管如此,有以下解决方法:
CBMA-10: 如果您在开始复制之前通过HTTP PUT手动创建目标数据库,则不需要`create_target`,一切都可以正常工作。
CBMA-3: 如果您想通过调用`_replicate`来开始复制,并且线程在取消复制后仍然阻塞,您可以手动取消该请求。不幸的是,在某些Android版本中存在错误,因此调用`httpRequest.abort()`无法正常工作(请参见http://code.google.com/p/android/issues/detail?id=7933)。您可以通过注入自定义的SocketFactory来绕过此问题,以便访问请求使用的套接字,并调用`shutdownInput()`,这会导致请求被中止。 另一种选择是使用replicator database(请参见https://gist.github.com/832610)。在这种情况下,在复制期间没有阻塞线程,但您必须轮询复制器数据库,以便识别何时完成复制。
除了这些问题之外,在移动平台上使用CouchDB的复制机制仍然存在其他问题。该实现尚未完全适应支持移动场景。因此,如果网络连接不稳定,则复制可能会挂起。此外,存在指数回退的重试机制,适用于服务器安装,但不适用于移动平台,其中连接丢失是常见事件。因此,总体而言,您必须仔细考虑是否要在此早期阶段使用移动CouchDB。也许您应该推迟决定,直到第一个官方GA发布(来自Couchbase的人宣布将于12月发布)。

很棒的答案,我在等待十二月的更新和arm5v的发布。 - razpeitia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接