08-23 安卓:Bmob后端云的集成以及需要注意的坑

因為現在有個小項目需要自己一個人去完成。服務器的程序就成了個不大不小的問題。自己寫的話,無疑耗時耗力,效果還不好。于是乎,便決定集成下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'
}
這里寫圖片描述
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,993評論 19 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,974評論 6 342
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,595評論 25 708
  • 1.介紹 如果你正在查閱build.gradle文件的所有可選項,請點擊這里進行查閱:DSL參考 1.1新構建系統...
    Chuckiefan閱讀 12,190評論 8 72
  • 今天一天都沒怎么玩,就傍晚吃著玉米看了集老友記,但是現在躺在床上想想,好像也沒有學到什么,看來還是效率太低了。 下...
    biubiu小魔仙閱讀 485評論 0 0