Couchdb на Android с API 2.0

#android #couchdb

#Android #couchdb

Вопрос:

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

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

Для достижения этого мне нужно реплицировать данные, и 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

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

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

  • arm5v: сбой теста (эмулятор и реальное устройство), app market и собственная сборка.
  • arm6v: сбой теста (реальное устройство), app market и собственная сборка.
  • arm7v: сбой теста (эмулятор), app market и собственная сборка.

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

Комментарии:

1. Вам нужно сфокусировать свой вопрос.

Ответ №1:

Мы также используем 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() который приводит к прерыванию запроса. Другой альтернативой было бы использование базы данных replicator (см. https://gist.github.com/832610 ). В этом случае блокирующий поток во время репликации отсутствует, но вам необходимо опросить базу данных replicator, чтобы определить, когда репликация завершена.

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

Комментарии:

1. Отличный ответ, я жду декабрьского обновления и для arm5v.