CouchBase - 在 Android Studio 中找不到 JavaContext

CouchBase - JavaContext not found in Android Studio

我正在按照 instruction 在 Android Studio 中设置 CouchBase。

问题是 JavaContext 似乎不存在。知道为什么吗?

private void test(){
    // Enable logging
    Logger log = Logger.getLogger("app");
    log.setLevel(Level.ALL);
    JavaContext context = new JavaContext(); // THIS LINE DOES NOT COMPILE
    // Create a manager
            Manager manager = null;
            try {
                manager = new Manager(context, Manager.DEFAULT_OPTIONS);
            } catch (IOException e) {
                e.printStackTrace();
            }
    // Create or open the database named app
            Database database = null;
            try {
                database = manager.getDatabase("app");
            } catch (CouchbaseLiteException e) {
                e.printStackTrace();
            }
    // The properties that will be saved on the document
            Map<String, Object> properties = new HashMap<String, Object>();
            properties.put("title", "Couchbase Mobile");
            properties.put("sdk", "Java");
    // Create a new document
            Document document = database.createDocument();
    // Save the document to the database
            try {
                document.putProperties(properties);
            } catch (CouchbaseLiteException e) {
                e.printStackTrace();
            }
    // Log the document ID (generated by the database)
    // and properties
    log.info(String.format("Document ID :: %s", document.getId()));
    log.info(String.format("Learning %s with %s", (String) document.getProperty("title"), (String) document.getProperty("sdk")));
}

这是我的 gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.woxthebox.draglistview.sample"
        minSdkVersion 11
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    // workaround for "duplicate files during packaging of APK" issue
// see https://groups.google.com/d/msg/adt-dev/bl5Rc4Szpzg/wC8cylTWuIEJ
    packagingOptions {
        exclude 'META-INF/ASL2.0'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }
}

repositories {
    jcenter()
    maven {
        url "http://files.couchbase.com/maven2/"
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':library')
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:cardview-v7:23.3.0'
    compile fileTree(dir: 'libs', include: ['*.jar'])
    //compile 'com.android.support:appcompat-v7:22.1.1'
    compile 'com.couchbase.lite:couchbase-lite-android:1.3.0'
}

编辑:

经过一番尝试,我发现这段代码有效:

    private void test(){
        // Enable logging
        Logger log = Logger.getLogger("app");
        log.setLevel(Level.ALL);
       // JavaContext context = new JavaContext();

        // Create a manager
                Manager manager = null;
                try {
                    manager = new Manager(new AndroidContext(getApplicationContext()), Manager.DEFAULT_OPTIONS);
                } catch (IOException e) {
                    e.printStackTrace();
                }
        // Create or open the database named app
                Database database = null;
                try {
                    database = manager.getDatabase("app");
                } catch (CouchbaseLiteException e) {
                    e.printStackTrace();
                }
        // The properties that will be saved on the document
                Map<String, Object> properties = new HashMap<String, Object>();
                properties.put("title", "Couchbase Mobile");
                properties.put("sdk", "Java");
        // Create a new document
                Document document = database.createDocument();
        // Save the document to the database
                try {
                    document.putProperties(properties);
                } catch (CouchbaseLiteException e) {
                    e.printStackTrace();
                }
        // Log the document ID (generated by the database)
        // and properties
        log.info(String.format("Document ID :: %s", document.getId()));
        log.info(String.format("Learning %s with %s", (String) document.getProperty("title"), (String) document.getProperty("sdk")));
    }

有人可以解释一下原来的说明有什么问题吗?

Can someone explain what was wrong with the original instructions ?

可能编写文档的人并不知道 Android Couchbase Lite 有一个 AndroidContext

然而,对于标准 Java(嵌入式?)项目,实际上有一个 JavaContext

Github 上的入门代码实际上也使用了 AndroidContext,因此该页面是错误的。

看这里(貌似正确)Couchbase Android - Getting Started Guide