2011-02-01 80 views
2

我正在使用android的本地CouchdDB應用程序。現在,就在這個星期CouchOne發佈libcouch,可謂「來使用CouchDB在Android交互所需的庫文件」: [email protected]Android Couchdb - libcouch和IPC Aidl服務

這是一個基本的應用程序,安裝的CouchDB如果CouchDB的服務(即附帶CouchDB的,如果它是以前安裝) 不能綁定到。

更確切地說,我的理解是: libcouch通過嘗試從CouchDB的 綁定到一個IPC服務,並通過該服務要使用CouchDB溝通估計CouchDB的設備上存在。

請參閱法 「attemptLaunch()」 在 CouchAppLauncher.class 審閱了:

公共無效attemptLaunch(){

Log.i(TAG,"1.) called attemptLaunch"); 

Intent intent = new Intent(ICouchService.class.getName()); 
    Log.i(TAG,"1.a) setup Intent"); 

    Boolean canStart = bindService(intent, couchServiceConn, 
      Context.BIND_AUTO_CREATE); 

    Log.i(TAG,"1.b bound service. canStart: " + Boolean.toString(canStart)); 


    if (!canStart) { 

     setContentView(R.layout.install_couchdb); 

     TextView label = (TextView) findViewById(R.id.install_couchdb_text); 
     Button btn = (Button) this.findViewById(R.id.install_couchdb_btn); 

     String text = getString(R.string.app_name) 
       + " requires Apache CouchDB to be installed."; 
     label.setText(text); 


     // Launching the market will fail on emulators 
     btn.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       launchMarket(); 
       finish(); 
      } 
     }); 
    } 
} 

我對這個問題(S)的: libcouch永遠無法「找到」以前安裝的CouchDB。它總是試圖從市場上安裝CouchDB 。這是因爲它實際上無法綁定到CouchDBService。 據我瞭解AIDL生成的服務接口的目的,打算將IPC提供給其他應用程序的實際 服務應使用AIDL。在這種情況下,AIDL已經被移動到試圖綁定到遠程服務的應用程序 ,遠程服務在這種情況下是libcouch。

檢查提交AIDL文件剛剛從該存儲庫移到libcouch。

有關完整的聯動,這裏的鏈接到Android的CouchDB來源: github.com/couchone/libcouch-android

現在,我可以在我的調查結果完全錯誤的,它也可能是lincouch的清單是s錯過了一些東西,但我真的很期待得到一些答案!

回答

2

我在電子郵件中回覆,但在此重申任何人。

libcouch庫包含在覈心CouchDB應用程序中,並且可供客戶端應用程序使用,因此CouchDB服務包含這些aidl文件。

您可能已經能夠使用該服務的原因是,市場上已有2個CouchDB版本,有一個沒有任何服務的舊版本,還有一個新版本(2.1版用戶看不到) 。今晚,已更新的CouchDB應用程序已針對2.1用戶重新發布,並刪除了舊版本。

CouchAppLauncher的源代碼應該可以幫助您瞭解如何使用該服務,我也將發佈教程不久

感謝 戴爾

+0

你好戴夫,我會再看一遍,再次感謝你。尼斯命名btw! – 2011-02-02 09:49:06

0

而只是爲了完整,我覺得有人放了非常好tutorial for Android上的couchapps :)