A newer version of this documentation is available.

View Latest
March 23, 2025
+ 12

Description — Build and run a starter app to validate your install of Couchbase Lite on Android
Abstract — This content provides sample code and instructions that enable you to test your Couchbase Lite for java-android installation.

Minification

An application that enables minification must ensure that certain pieces of Couchbase Lite library code are not changed — see Example 1 for a near-minimal rule set that retains the needed code:

Example 1. Ruleset
Java
-keep class com.couchbase.lite.ConnectionStatus { <init>(...); } -keep class com.couchbase.lite.LiteCoreException { static <methods>; } -keep class com.couchbase.lite.internal.core.C4* { static <methods>; <fields>; <init>(...); }

Running

Open MainActivity.java in Android Studio and copy the following code in the onCreate method. This snippet demonstrates how to run basic CRUD operations, a simple Query and running bi-directional replications with Sync Gateway.

Example 2. Sample code to test install

// Initialize the Couchbase Lite system
CouchbaseLite.init(context);

// Get the database (and create it if it doesn’t exist).
DatabaseConfiguration config = new DatabaseConfiguration();

config.setDirectory(context.getFilesDir().getAbsolutePath());

Database database = new Database("getting-started", config);


// Create a new document (i.e. a record) in the database.
MutableDocument mutableDoc = new MutableDocument()
.setFloat("version", 2.0F)
.setString("type", "SDK");

// Save it to the database.
database.save(mutableDoc);

// Update a document.
mutableDoc = database.getDocument(mutableDoc.getId()).toMutable();
mutableDoc.setString("language", "Java");
database.save(mutableDoc);
Document document = database.getDocument(mutableDoc.getId());
// Log the document ID (generated by the database) and properties
Log.i(TAG, "Document ID :: " + document.getId());
Log.i(TAG, "Learning " + document.getString("language"));

// Create a query to fetch documents of type SDK.
Query query = QueryBuilder.select(SelectResult.all())
.from(DataSource.database(database))
.where(Expression.property("type").equalTo(Expression.string("SDK")));
ResultSet result = query.execute();
Log.i(TAG, "Number of rows ::  " + result.allResults().size());

// Create replicators to push and pull changes to and from the cloud.
Endpoint targetEndpoint = new URLEndpoint(new URI("ws://localhost:4984/getting-started-db"));
ReplicatorConfiguration replConfig = new ReplicatorConfiguration(database, targetEndpoint);
replConfig.setReplicatorType(ReplicatorConfiguration.ReplicatorType.PUSH_AND_PULL);

// Add authentication.
replConfig.setAuthenticator(new BasicAuthenticator("sync-gateway", "password"));

// Create replicator (be sure to hold a reference somewhere that will prevent the Replicator from being GCed)
Replicator replicator = new Replicator(replConfig);

// Listen to replicator change events.
replicator.addChangeListener(change -> {
  if (change.getStatus().getError() != null) {
    Log.i(TAG, "Error code ::  " + change.getStatus().getError().getCode());
  }
});

// Start replication.
replicator.start();

Build and run. You should see the document ID and property printed to the console. The document was successfully persisted to the database.

See also — Install