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'
}
这里写图片描述
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,594评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,733评论 6 342
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,431评论 25 707
  • 1.介绍 如果你正在查阅build.gradle文件的所有可选项,请点击这里进行查阅:DSL参考 1.1新构建系统...
    Chuckiefan阅读 12,115评论 8 72
  • 今天一天都没怎么玩,就傍晚吃着玉米看了集老友记,但是现在躺在床上想想,好像也没有学到什么,看来还是效率太低了。 下...
    biubiu小魔仙阅读 452评论 0 0