文档
3.5.0
配置
说明
为降开发使用成本,v3.4.7+同步提供aar格式文件,含libbmob.so、依赖jar包(okhttp
、okio
、rx、gson等)及自更组件需资源文件。开发者无需配置libbmob.so、添依赖jar、复制自更组件资源文件,仅添compile 'cn.bmob.android:bmob-sdk:3.5.0'
即可。
操作
-
build.gradle(app)
apply plugin: 'com.android.application' android { ... } dependencies { compile 'cn.bmob.android:bmob-sdk:3.5.0' /*bmob*/ } 复制代码
-
build.gradle(project)
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ... } allprojects { repositories { google() jcenter() maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" } } } 复制代码
问题
gradle添okhttp
、okio
致unable to merge dex
。
分析
据上标注知依赖重复。
解决
- 一
- 二 删gradle中
okhttp
、okio
。
缺陷
通常如下排除指定库:
compile('com.squareup.okhttp3:okhttp:3.9.1'){
exclude group : 'com.squareup.okio'
}
复制代码
然Bmob不支持,只能删gradle单独所添okhttp
、okio
。如此影响用特定版okhttp
/okio
。
兼容
build.gradle(app):
apply plugin: 'com.android.application'
android {
// 兼容6.0出错于dependencies用compile 'cn.bmob.android:http-legacy:1.0'
useLibrary 'org.apache.http.legacy'
...
}
dependencies {
compile 'cn.bmob.android:http-legacy:1.0'
/*兼6.0加依赖org.apache.http.legacy.jar*/
}
复制代码
3.5.5
compile 'cn.bmob.android:bmob-sdk
改版本号3.5.5
,其它同3.5.0
。
附
cn_bmob_android_bmob_sdk_3_5_5
<component name="libraryTable">
<library name="cn.bmob.android:bmob-sdk-3.5.5">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/bmob-sdk-3.5.5.aar/a9411d656b3bb91af60cd40591f1e007/jars/libs/rxandroid-1.2.0.jar!/" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/bmob-sdk-3.5.5.aar/a9411d656b3bb91af60cd40591f1e007/jars/libs/rxjava-1.1.6.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/bmob-sdk-3.5.5.aar/a9411d656b3bb91af60cd40591f1e007/res" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/bmob-sdk-3.5.5.aar/a9411d656b3bb91af60cd40591f1e007/jars/libs/BmobSDK_3.5.5_20170420.jar!/" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/bmob-sdk-3.5.5.aar/a9411d656b3bb91af60cd40591f1e007/jars/libs/okio-1.7.0.jar!/" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/bmob-sdk-3.5.5.aar/a9411d656b3bb91af60cd40591f1e007/jars/classes.jar!/" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/bmob-sdk-3.5.5.aar/a9411d656b3bb91af60cd40591f1e007/jars/libs/gson-2.6.2.jar!/" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/bmob-sdk-3.5.5.aar/a9411d656b3bb91af60cd40591f1e007/jars/libs/okhttp-3.3.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>
复制代码
cn.bmob.android:bmob-sdk-3.5.5
含rxandroid
、rxjava
、okio
、gson
、okhttp
。
出处
- 配置、同步
.idea
->libraries
- 找cn_bmob_android_bmob_sdk_3_5_5
3.5.9
配置
说明
考虑相当一部分开发者初/中级,本着让开发者做事更少原则,仍暂把依赖第三方库和so文件放maven仓库之aar包,两行配置即可开发(无需so和相关配置)。用特定版第三方库:
- AS依赖视图删aar中
okio
等; - 改为本地依赖SDK之jar包方式,似Eclipse开发;
近期版基本稳定该方式,版本间亦向下兼容。后逐淡出第三方库或改善体验。
操作
-
build.gradle(app)
apply plugin: 'com.android.application' android { ... } dependencies { compile 'cn.bmob.android:bmob-sdk:3.5.9' /*bmob*/ } 复制代码
-
build.gradle(project)
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ... } allprojects { repositories { google() jcenter() maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" } } } 复制代码
问题
3.5.5
升3.5.9
致unable to merge dex
。
分析
.idea
->libraries
- 找cn_bmob_android_bmob_sdk_3_5_9
<component name="libraryTable"> <library name="cn.bmob.android:bmob-sdk-3.5.9"> <CLASSES> <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/bmob-sdk-3.5.9.aar/45f9481fb26fcecad5bc4ae0783c9a99/res" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/bmob-sdk-3.5.9.aar/45f9481fb26fcecad5bc4ae0783c9a99/jars/libs/okio-1.12.0.jar!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/bmob-sdk-3.5.9.aar/45f9481fb26fcecad5bc4ae0783c9a99/jars/libs/gson-2.6.2.jar!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/bmob-sdk-3.5.9.aar/45f9481fb26fcecad5bc4ae0783c9a99/jars/libs/org.apache.http.legacy.jar!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/bmob-sdk-3.5.9.aar/45f9481fb26fcecad5bc4ae0783c9a99/jars/classes.jar!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/bmob-sdk-3.5.9.aar/45f9481fb26fcecad5bc4ae0783c9a99/jars/libs/rxandroid-1.2.0.jar!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/bmob-sdk-3.5.9.aar/45f9481fb26fcecad5bc4ae0783c9a99/jars/libs/BmobSDK_3.5.9_20180102.jar!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/bmob-sdk-3.5.9.aar/45f9481fb26fcecad5bc4ae0783c9a99/jars/libs/rxjava-1.1.6.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES /> </library> </component> 复制代码
cn.bmob.android:bmob-sdk-3.5.9
无okhttp
且3.5.5
时gradle删单独所添okhttp
、okio
(避unable to merge dex
),故升至3.5.9
时gradle缺okhttp
致unable to merge dex
。
解决
gradle添okhttp
隐患
据cn_bmob_android_bmob_sdk_3_5_9知cn.bmob.android:bmob-sdk-3.5.9
含okio
、gson
、org.apache.http.legacy.jar
、rxandroid
、rxjava
。上述解决(gradle添okhttp
)后或致unable to merge dex
,详情:
okio
重复。
到此疑惑,既然仅cn.bmob.android:bmob-sdk-3.5.9
含okio
且gradle没单独添okio
,又为何okio
重复?
原因为cn.bmob.android:bmob-sdk-3.5.9
不含okhttp
,为避unable to merge dex
,gradle单独添okhttp
。而okhttp
引用okio
(最新版),与cn.bmob.android:bmob-sdk-3.5.9
含okio
重复(两okio
不同版亦重)。如下解决:
compile('com.squareup.okhttp3:okhttp:3.9.1') {
exclude group: 'com.squareup.okio'
}
复制代码
兼容
cn.bmob.android:bmob-sdk-3.5.9
含org.apache.http.legacy.jar
,已兼容,无需另设。报错如下设: build.gradle(app):
apply plugin: 'com.android.application'
android {
...
}
dependencies {
compile 'cn.bmob.android:http-legacy:1.0'
/*兼6.0*/
}
复制代码
补充
集成除上述外另需添相应权限。