因為現在有個小項目需要自己一個人去完成。服務器的程序就成了個不大不小的問題。自己寫的話,無疑耗時耗力,效果還不好。于是乎,便決定集成下Bmob后端云。
簡介
Bmob 提供了實時數據與文件存儲功能,輕松實現應用“云與端”的數據連通。數據存儲除了常規應用文本信息的存儲,還可以存儲圖片、視頻、音頻、地理位置等信息。
此外數據服務還內置用戶系統、即時通訊、權限控制等,開發者幾行代碼即可實現快速集成。
恩,聽起來就很動人,尤其是對我這后臺學的不怎么樣的人是個很大的幫助啊!話不多說,開擼!
集成方法
不得不說,官網的介紹已經非常詳細了。各種集成方法都介紹了。官網教程戳這里==》Bmob集成文檔。
恩,我這里簡單寫下android studio的依賴集成方法。也是Bmob推薦的集成方法。
第一步 添加依賴
在 Project 的 build.gradle 文件中添加 Bmob的maven倉庫地址,示例如下:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
}
}
allprojects {
repositories {
jcenter()
//**Bmob的maven倉庫地址--必填**
maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" }
}
}
在app的build.gradle文件中添加compile依賴文件,示例如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion '22.0.1'
**兼容Android6.0系統所需,如果這句話報錯,可在dependencies標簽下使用compile 'cn.bmob.android:http-legacy:1.0'**
useLibrary 'org.apache.http.legacy'
...
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
//以下SDK開發者請根據需要自行選擇
//bmob-sdk:Bmob的android sdk包,包含了Bmob的數據存儲、文件等服務,以下是最新的bmob-sdk:3.5.5
compile 'cn.bmob.android:bmob-sdk:3.5.5'
//bmob-push:Bmob的推送包
compile 'cn.bmob.android:bmob-push:0.8'
//bmob-im:Bmob的即時通訊包,注意每個版本的im依賴特定版本的bmob-sdk,具體的依賴關系可查看下面注釋[2]
compile 'cn.bmob.android:bmob-im:2.0.5@aar'
compile 'cn.bmob.android:bmob-sdk:3.4.7-aar'
//bmob-sms :Bmob單獨為短信服務提供的包
compile 'cn.bmob.android:bmob-sms:1.0.1'
//如果你想應用能夠兼容Android6.0,請添加此依賴(org.apache.http.legacy.jar)
compile 'cn.bmob.android:http-legacy:1.0'
}
第二步 各種配置Bmob
在你的應用程序的AndroidManifest.xml文件中添加相應的權限:
<!--允許聯網權限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!--獲取GSM(2g)、WCDMA(聯通3g)等網絡狀態的信息 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--獲取wifi網絡狀態的信息 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--保持CPU 運轉,屏幕和鍵盤燈有可能是關閉的,用于文件上傳和下載 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!--獲取sd卡寫的權限,用于文件上傳和下載-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允許讀取手機狀態 用于創建BmobInstallation-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
初始化BmobSDK
在應用程序啟動的Activity的onCreate()方法中初始化Bmob功能。
懶人寫一句
//默認初始化
Bmob.initialize(this, "這里填你申請的Application ID");
//集成統計sdk的初始化(第三個參數是渠道參數)
//Bmob.initialize(this, "這里填你申請的Application ID","bmob");
如果想勤快點兒,就寫下面這幾句
//自v3.4.7版本開始,設置BmobConfig,允許設置請求超時時間、文件分片上傳時每片的大小、文件的過期時間(單位為秒),
BmobConfig config =new BmobConfig.Builder(this)
.setApplicationId("Your Application ID")//設置appkey
.setConnectTimeout(30)//請求超時時間(單位為秒):默認15s
.setUploadBlockSize(1024*1024)//文件分片上傳時每片的大小(單位字節),默認512*1024
.setFileExpiration(2500)//文件的過期時間(單位為秒):默認1800s
.build();
Bmob.initialize(config);
大功告成
恩,到這里就配置完畢了,可以愉快的增刪改查了。如果出現了莫名其妙的錯誤,那接著往下看---
坑
恩,說個坑吧。因為Bmob集成了okhttp以及rxjava。所以有可能和原有的依賴重復。
恩,就會報如圖的錯誤:
這里寫圖片描述
Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/rxjava.properties
File1: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\io.reactivex\rxjava\1.2.0\42bfaf64c94f3848ebf5cf1c2ea4ec9d1b3ac6c8\rxjava-1.2.0.jar
File2: C:\Users\Administrator\.android\build-cache\b33b7e36d3fa0e8a6c71bf2352fd19ddd498aa10\output\jars\classes.jar
恩……這里就暴露了我基礎不扎實的秘密。一個重復依賴的問題讓我頭疼了老大會兒。各種百度,還搜索不出來。(恩?只有我出現過這個問題?)
恩,最后的解決方法如下:
在module包下的build.gradle里面加上這幾句代碼就好了
packagingOptions {
exclude 'META-INF/rxjava.properties'
}
這里寫圖片描述