Couchdb на Android с API 2.0 - PullRequest
       1

Couchdb на Android с API 2.0

4 голосов
/ 08 ноября 2011

Я работаю в андроид-проекте, идея проста: мне просто нужно записать время нажатия кнопки.Эта часть плоская и простая.

Проблема в том, что мне нужно синхронизировать данные в режиме реального времени (или, по крайней мере, с очень приемлемой задержкой <= 5 с).Кроме того, возможно, устройство могло потерять соединение, поэтому нам также нужно, чтобы это приложение могло работать в автономном режиме. </p>

Для этого мне нужно скопировать данные, и couchdb, кажется, предлагает это.

ТакЯ начал тестировать несколько примеров:

Но ни один изкажется, что они работают с этой инструкцией .Я имею в виду, что он работает, делает apk-файл работающим, установка успешна, но при запуске приложения оно продолжает работать и абсолютно ничего не делает.

Я понимаю, что CouchDB на Android работает следующим образом:

  • Установите службу CouchDB, чтобы несколько приложений могли использовать эту службу.
  • Моему приложению для Android необходимо использовать API для работы с этой службой CouchDB, выполняя операции POST, GET, PUT и т. Д.запросы.

Мой вопрос:

  • Как мне заставить работать эти примеры выше с API 2.0?

Обновление:

Возможная связанная ссылка: https://groups.google.com/group/mobile-couchbase/browse_thread/thread/83816c0d0f1b050b

Обновление 2:

Похоже, проблема в версии процессора, все планшеты, которые у меня есть, это armv5.

Исправлена ​​ошибка: http://www.couchbase.org/issues/browse/CBMA-13

Я еще не тестировал процессор arm7v, но сделаю это через пару часов.

Обновление 3:

Я дважды тестировал приложение, но все еще не работает с (ARM) armeabi-7va

Update 4:

Я тестировал пример мобильного футона на нескольких устройствах:

  • arm5v: тест не пройден (эмулятор и реальное устройство), рынок приложений и собственная сборка.
  • arm6v: Тест не пройден (реальное устройство), рынок приложений и собственная сборка.
  • arm7v: Тест не пройден (эмулятор), рынок приложений и собственная сборка.

Неудачно - так многоспособы, которыми я так расстроен.И даже если мне удастся запустить couchdb в arm5v, мне придется иметь дело с этими основными ошибками 1 2 :

1 Ответ

3 голосов
/ 20 ноября 2011

Мы используем CouchDB на Android, а также в крупном проекте. Эти 2 ошибки были зарегистрированы мной, и, к сожалению, они до сих пор не исправлены. Тем не менее, есть обходные пути для них:

CBMA-10: Если вы создаете целевую базу данных вручную через HTTP PUT перед началом репликации, вам не нужно create_target, и все работает нормально.

CBMA-3: Если вы хотите запустить репликацию с помощью вызова _replicate, а поток все еще блокируется после отмены репликации, вы можете отменить этот запрос вручную. К сожалению, в некоторых версиях Android есть ошибка, из-за которой вызов httpRequest.abort() не работает (см. http://code.google.com/p/android/issues/detail?id=7933).. Вы можете обойти эту проблему, введя настроенный SocketFactory для получения доступа к сокету, используемому в запросе, и вызовите shutdownInput() что приводит к отмене запроса. Другой альтернативой может быть использование базы данных репликатора (см. https://gist.github.com/832610).. В этом случае во время репликации нет блокирующего потока, но вам необходимо опросить базу данных репликатора, чтобы определить, когда репликация была завершена.

В дополнение к этим проблемам существуют и другие проблемы при использовании механизма репликации CouchDB на мобильных платформах. Реализация еще не полностью принята для поддержки мобильного сценария. Так репликации могут зависнуть, например, если сетевое соединение не стабильно. Кроме того, существует механизм повторных попыток с экспоненциальным откатом, который подходит для установки серверов, но не на мобильных платформах, где потеря соединения является обычным явлением. Итак, в общем, вы должны тщательно решить, хотите ли вы использовать мобильную CouchDB в этом раннем состоянии. Возможно, вам следует отложить свое решение до первого официального релиза GA (ребята из Couchbase объявили об этом в декабре).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...