【发布时间】:2011-02-01 23:17:23
【问题描述】:
我正在开发一个带有 android 的原生 CouchdDB 应用程序。就在本周,CouchOne 发布了 libcouch,被描述为“在 Android 上与 CouchDB 交互所需的库文件”: couchone_libcouch@Github
这是一个安装 CouchDB 的基本应用程序,如果 CouchDB 服务(如果之前已安装,则随 CouchDB 一起提供) 无法绑定。
更准确地说,据我所知: libcouch 通过尝试从 CouchDB 绑定到 IPC 服务来估计设备上 CouchDb 的存在 并通过该服务与 CouchDB 进行通信。
请参阅方法“attemptLaunch()” CouchAppLauncher.class 审查这个:
公共无效尝试启动(){
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 的清单遗漏了一些东西,但我真的很期待得到一些答案!
【问题讨论】:
标签: android service couchdb ipc aidl