2017-03-07 91 views
0

(從SymmetricDS論壇X-POST)SymmetricDS Android的演示都註冊,但不同步

你有使用SymmetricDS 3.8同步與演示根節點的Android應用程序的工作的例子嗎?我已經通過了兩個JumpMind的例子,並且兩個都使用ECONNREFUSED對localhost:31415失敗。

即使他們知道如何在不同的機器上註冊根節點,他們也會嘗試在本地主機上同步它。

下面是如何構建和(不成功)運行兩個現有樣本的演練。

示例1:

Jumpmind's original demo from 2012使用記事本應用程序,和許多的步驟假定你在Eclipse中運行,並有自己的專業版。有幾個箍環可以讓它在具有免費版本的SymmetricDS的現代Android Studio中編譯。

  • Studio中,新建項目 - >導入從Android/Sdk/samples/android-23/legacy/NotePad
  • 做一個測試編譯和運行,以確保這個前綴
  • download and extract sample 2得到庫
  • 提取庫到記事本/應用/庫/
  • 編輯你的Gradle應用規則,添加編譯依賴,因此:

    dependencies { compile fileTree(dir: 'libs', include: '*.jar') }

  • 同步的gradle
  • 從教程推薦的代碼粘貼到 OnCreate中在NotePadProvider.java。(第一個是在static class DatabaseHelper
  • 修改REGISTRATION_URL指向您根節點
  • 修改適當的NODE_GROUP_ID。如果你使用的是演示服務器,這應該是「存儲」。
  • 我使用了外部ID「android-003」,因爲這就是樣本#2中使用的。
  • 不要忘記打開您的外部ID註冊。像

    symadmin東西--properties corp-000.properties開放註冊商店下載Android-003

  • 觀察logcat的失敗

    Building transport url: http://localhost:31415/sync/corp-000/push?nodeId=android-003&securityToken=88b79dcc9617099aec015ae5ed800b&hostName=localhost&ipAddress=10.0.2.15 Could not communicate with node 'corp:000:000' at http://localhost:31415/sync/corp-000 because of unexpected error org.jumpmind.exception.IoException: java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 31415) after 20000ms: isConnected failed: ECONNREFUSED

示例2:

Jumpmind's newer sample包含對文件同步的支持,我不支持現在關心。但它應該可以直接用於演示節點corp-000。至少對我而言,事實並非如此。

下面是你必須做的:在本教程

  • 試圖描述

    • download the source
    • 修改REGISTRATION_URL(使用開發機的非本地主機IP地址)
    • 修改清單要運行該應用程序將失敗,INSTALL_FAILED_CONFLICTING_PROVIDER,我不得不將更改清單中定義的提供程序爲com.jumpmind.syncds3.DbProvider,因爲默認Android圖像上已經有一個應用程序使用提供程序com.google.provider.NotePad
    • 在服務器/根節點上的android-003的公開註冊
    • 通過查看服務器的sym_node_security表來確認註冊。
    • 有趣的是,該行沒有initial_load_time,並且沒有顯示同步的跡象。
    • 回到您的Android應用程序,觀察嘗試與本地主機上的corp-000節點同步的logcat相同的錯誤。
  • 回答

    0

    已解決。對於任何以類似問題出現的人來說,問題是雙重的。

    1. 客戶端從服務器獲取其同步URL。演示服務器在本地主機上指定一個sync-url。
    2. (壞)同步網址在sym表格中仍然存在,顯然在客戶端服務器上。

    解決方案:

    如果你正在運行在Linux上,隨意use my scripted demo server。它將sync-url設置爲列表中的第一個IP地址,而不是localhost。

    否則:

    1. 停止您的客戶端和服務器。
    2. 演示根節點在corp-000.properties中的本地主機上配置了SYNC URL。這是你問題的根源。將其更改爲有意義的IP地址。也可以使用非標準端口來幫助說明問題 - 這意味着將--port xxxx添加到用於運行根節點的命令中。
    3. 刪除並重新創建您的根節點數據庫。我不確定這裏有什麼陳舊的東西,但是在新地址上重新運行服務器似乎還不夠。可能有另一種方法來刷新這個,但重新開始是最簡單的。
    4. 刪除你的android節點數據庫。我用「adb shell rm -rf /data/data/com.jumpmind.*」
    5. 重新運行你的服務器和客戶端。