安卓开发使用Bmob遇到的一些问题及解决办法

安卓开发使用Bmob遇到的一些问题及解决办法

最近在做安卓的大作业,在数据库方面遇到了很多困难,最后决定使用Bmob云数据库作为后端。在按照官方文档将Bmob SDK配置到Android Studio和初始化Bmob时,出现了很多问题,下面记录了我在使用Bmob时的问题和一些解决方案(Android Studio版本为3.6,项目使用的Android10.0)

  1. 初始化Bmob时,在执行到初始化语句时页面出现闪退的情况。
    一开始,我是按照文档里的快速入门配置的BmobSDK,用的是官方推荐的通过添加依赖自动导入的方法。配置完成后,在项目中加入初始化语句,结果每次打开都会闪退。查了很多办法,没有解决问题,也没有找到到底什么原因。后来尝试手动导入,导入成功后,再使用初始化语句就不会闪退了。
    手动导入方法:在BmobSDK下载中心下载数据服务 的Android 版本的SDK。下载后,将本地导入SDK文件夹下的libs文件夹里的东西复制到项目工程里的libs目录下。安卓开发使用Bmob遇到的一些问题及解决办法_第1张图片
    安卓开发使用Bmob遇到的一些问题及解决办法_第2张图片
    图上标记的androidx-core-1.0.0在导入后报错,报错信息全是关于androidx-core-1.0.0的,应该是跟已有的版本冲突了,所以不用导入这个。okio-2.1.0导入后未报错,但是在有bmob数据操作的activity会闪退,所以不能本地添加这个okio-2.1.0 jar包。详细信息将在后面给出。
    导入成功以后,添加依赖
    app的build.gradle文件中添加依赖文件
// 设置JDK1.8,支持Lambda表达式
android{
compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    //添加依赖
    sourceSets {main.jniLibs.srcDirs = ['libs']
    	}
    	useLibrary 'org.apache.http.legacy'
}
   dependencies {
   implementation "org.reactivestreams:reactive-streams:1.0.2"
    implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: [])
    //导入okio包
    implementation 'com.squareup.okhttp3:okhttp:3.14.1'
    implementation 'com.squareup.okio:okio:2.2.2'
    }

接下来就是配置文件了。
配置AndroidManifest.xml
添加相应的权限

 
 
 
 
 

配置ContentProvider

// A code block

  

到这一步BmobSDK就导入成功了,在application的oncreate方法里加入初始化语句 Bmob.initialize(this, “Your Application ID”);这个时候初始化就成功啦!
按照官方文档本地导入SDK后,在执行插入数据时,仍出现了闪退的情况,所以上面给出的配置文件或依赖有官方文档没写的东西。按照以上的步骤配置,应该不会出现我当初的问题。
2.save方法导致的闪退
当初按照文档给的仅添加配置 sourceSets {
main.jniLibs.srcDirs = [‘libs’]}
调用bmob里的save方法会闪退,调试时主要报错有
LambdaObserver.onError
解决办法:设置JDK1.8,在上面配置文件以给出
Lorg/reactivestreams/Publisher
解决办法:缺少reactive-streams.jar包,
implementation “org.reactivestreams:reactive-streams:1.0.2”
上面添加依赖时已给出
Failed resolution of: Lokhttp3/MediaType
解决办法:okio这个包要通过implementation导入,不能本地导入

我给出的本地导入的步骤,里面都直接配置好了这些,可以避免踩雷。
3.网络请求问题
终于没有闪退时,我做了注册登录功能,结果发现在注册完成后接着点击登录,并不能查询到用户信息,必须得重启一下才能登录成功。登录失败获取到的返回报错信息为java.net.UnknownServiceException: CLEARTEXT communication to open2.bmob.cn not permitted by network security policy安卓开发使用Bmob遇到的一些问题及解决办法_第3张图片
这是由于http请求阻塞不能联网导致的。安卓9强制使用https,这个时候一种解决办法就是让它兼容。在AndroidManifest文件的application里加入android:usesCleartextTraffic=“true”。加入后,多次测试,都没有再出现这个问题。
在大作业中遇到的其他问题将以后再整理。

你可能感兴趣的:(安卓开发使用Bmob遇到的一些问题及解决办法)