我正在使用 android 开发本机 CouchdDB 应用程序。现在就在本周 CouchOne 发布了 libcouch,被描述为“在 Android 上与 CouchDB 交互所需的库文件”: couchone_libcouch@Github
如果无法绑定 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。据我了解 auf AIDL 生成服务接口的目的,打算将其 IPC 提供给其他应用程序的实际服务应该使用 AIDL。在这种情况下,AIDL 已移至尝试绑定到远程服务的应用程序,在这种情况下为 libcouch。
查看刚刚从该存储库移出到 libcouch 的 AIDL 文件的提交。
对于完整的链接,这里是 Android CouchDB 源的链接:github.com/couchone/libcouch-android
现在,我的发现可能完全错误,也可能是 lincouch 的清单遗漏了一些东西,但我真的很期待得到一些答案!