私はAndroidでネイティブのCouchdDBアプリに取り組んでいます。ちょうど今週、CouchOne が libcouch をリリースしました。これは、「Android で CouchDB と対話するために必要なライブラリ ファイル」と説明されています 。
これは、CouchDB サービス (以前にインストールされていた場合は CouchDB に付属) をバインドできない場合に CouchDB をインストールする基本的なアプリです。
より正確に言うと、私が理解しているように、libcouch は、CouchDB から IPC サービスにバインドしようとすることで、デバイス上の CouchDb の存在を推定し、そのサービスを介して CouchDB と通信したいと考えています。
これを確認するには、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();
}
});
}
}
これについて私が持っている質問は次のとおりです: libcouch は、以前にインストールされた CouchDB を「見つける」ことができません。常にマーケットから CouchDB をインストールしようとします。これは、実際には CouchDBService にバインドできないためです。AIDL によって生成されたサービス インターフェイスの目的を理解しているので、その IPC を他のアプリケーションに提供しようとする実際のサービスは、AIDL を利用する必要があります。この場合、AIDL は、リモート サービス (この場合は libcouch) にバインドしようとしているアプリケーションに移動されています。
コミットを確認すると、AIDL ファイルがそのリポジトリから libcouch に移動されました。
完全なリンクについては、Android CouchDB ソースへのリンクを次に示します: github.com/couchone/libcouch-android
さて、私の調査結果は完全に間違っている可能性があります。何かが欠けているのはlincouchのマニフェストである可能性もありますが、いくつかの答えが得られることを本当に楽しみにしています!