【前言】一般来讲,Android使用的数据库都是自带的SQLite数据库。Web重量级的MySQL、Orcacle、NOSQL等都不适用于Android项目的开发。但是我发现了一个Web上最近几年比较火的一个数据库 ---- MongoDB。查看它的官网发现,它还可以用于Android开发,而且官方文档也给出了一些API说明。于是我决定写下这篇博客分享一下MongoDB在Android上怎么使用。
【说明】:MongoDB也可以在iOS上面使用,我是做安卓开发的,本文只讲解MongoDB在Android上面的使用,iOS的使用情况请上MongoDB官网自行查阅。
一、准备工作
(一)、环境要求
- Android系统 >= 5.0
- API >= 21
- 支持的设备CPU型号:armeabi-v7a、arm64-v8a或x86_64(不支持x86设备)。
(二)、创建一个新的Android项目,或者打开已存在的项目。
创建一个新项目,截图如下:
(三)、然后做以下配置
在module的build.gradle
文件中添加依赖项:
dependencies {
// 添加 MongoDB Mobile SDK
implementation 'org.mongodb:stitch-android-sdk:4.1.0'
}
然后在module的build.gradle
的android
节点里面文件中添加java 1.8支持:
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.lzw.mongodbdemo"
minSdkVersion 25
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
// 编译选项
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
(四)、最后点击右上角的Sync Now
,表示下载MongoDB SDK并自动执行了gradle build命令。
编译成功如下图所示:
三、MongoDB SDK在本地的路径
(一)、MongoDB SDK会有很多附带的依赖包
如下图所示:
(二)、本地路径
下载的mongodb所在本地的路径为:C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\org.mongodb\
,打开该路径之后截图如下所示:
四、使用 MongoDB Mobile
(一)、初始化
// import com.mongodb.client.MongoCollection;
// 基础 Stitch 包
// MongoDB Mobile 运行必需的组件
(二)、初始化MongoDB Mobile数据库,然后在应用程序中创建MongoDB Mobile客户端
// Create the default Stitch Client
final StitchAppClient client =
Stitch.initializeDefaultAppClient("<APP ID>");
// Create a Client for MongoDB Mobile (initializing MongoDB Mobile)
final MongoClient mobileClient =
client.getServiceClient(LocalMongoDbService.clientFactory);
(三)、您现在可以直接访问MongoDB Mobile。例如,要指向集合并插入文档,请使用以下代码:
(四)、本地路径
五、遇到的一些错误:
1、com.mongodb.embedded.client.MongoClientEmbeddedException
具体错误如下图所示:
【原因】:MongoDB Mobile不支持x86设备。默认情况下,Android Studio会为AVD部署选择x86映像,刚好运行的模拟器使用了x86镜像,导致了这个错误的发生。
【解决方案】:如果要将Android应用程序部署到AVD模拟器(即:AS自带模拟器),请务必为AVD选择x86_64或者arm的映像。