2

我正在使用 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 的清单遗漏了一些东西,但我真的很期待得到一些答案!

4

2 回答 2

2

我在一封电子邮件中回复了这里的任何人。

libcouch 库包含在核心 CouchDB 应用程序中,并供客户端应用程序使用,因此 CouchDB 服务确实包含这些aidl 文件。

您可能能够使用该服务的原因是市场上有 2 个版本的 CouchDB,一个没有任何服务的旧版本,一个新版本(对 2.1 用户不可见)。今晚更新的 CouchDB 应用程序已为 2.1 用户重新发布,旧版本已删除。

CouchAppLauncher 的源代码应该可以帮助您了解如何使用该服务,我也将很快发布一个教程

谢谢戴尔

于 2011-02-02T08:05:49.380 回答
0

为了完整起见,我认为有人为 android 上的 couchapps 提供了一个非常好的教程:)

于 2011-02-15T21:06:16.237 回答