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

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

  1. 初始化Bmob时,在执行到初始化语句时页面出现闪退的情况。
    一开始,我是按照文档里的快速入门配置的BmobSDK,用的是官方推荐的通过添加依赖自动导入的方法。配置完成后,在项目中加入初始化语句,结果每次打开都会闪退。查了很多办法,没有解决问题,也没有找到到底什么原因。后来尝试手动导入,导入成功后,再使用初始化语句就不会闪退了。
    手动导入方法:在BmobSDK下载中心下载数据服务 的Android 版本的SDK。下载后,将本地导入SDK文件夹下的libs文件夹里的东西复制到项目工程里的libs目录下。

    图上标记的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_8targetCompatibility 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
添加相应的权限

<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" />

配置ContentProvider

// A code block
<application<providerandroid:name="cn.bmob.v3.util.BmobContentProvider"android:authorities="应用包名.BmobContentProvider"></provider>
</application>

到这一步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
这是由于http请求阻塞不能联网导致的。安卓9强制使用https,这个时候一种解决办法就是让它兼容。在AndroidManifest文件的application里加入android:usesCleartextTraffic=“true”。加入后,多次测试,都没有再出现这个问题。
在大作业中遇到的其他问题将以后再整理。

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

  1. 在win7系统 Keil 开发环境下 Jlink 仿真器连不上解决办法

    Keil 开发环境下 Jlink仿真器,在win7系统下,仿真器连不上解决办法 进入设备管理器,发现黄色问号,即windows不识别设备,分别右键点击属性,更新驱动程序.在安装keil目录下自动查找, ...

  2. 微信小程序开发之编译自动生成新文件的解决办法

    文章目录 前言 微信小程序开发中一自动编译就自动生成一些wxss,wxml,文件的解决办法 一. 问题详情 二.为什么会出现这个情况 三.解决办法 1.找到app.json文件夹下的具体页面详情 2. ...

  3. 安卓微信中长按base64图片无法保存的解决办法

    遇到的问题:后端返回的是base64格式的图片,前端拿到返回体后进行拼接展示在img标签上,微信长按图片进行保存,发现苹果长按保存成功,安卓长按保存后相册中保存的图片时黑色的(且提示格式损坏) thi ...

  4. ADSP-21489的开发详解:VDSP+自己编程写代码开发(3-可能出现的故障和解决办法)

    硬件准备 ADSP-21489EVB:ADI 21489处理器的开发板 AD-HP530ICE:ADI DSP专用仿真器 USBi:ADI SigmaDSP和SHARC DSP的图形化编程调试器 软件 ...

  5. MIUI12(开发版) 更新之后无法使用Google服务的解决办法

    我的红米K20, 更新了安卓11之后, 突然发现Google相关的Apps全都不能用了. 网上有说把google全家桶后台全部设为自动重启并且允许唤醒, 亲测无效! 目前在我的能力范围之内发现2中解决 ...

  6. CAD二次开发--CAD2007(.Net3.5环境)等低版本CAD二次开发在VS中无法捕获断点调试解决办法(CAD二次开发无法断点调试解决办法)

    目录 1.说明 2.解决办法 1.说明 在进行CAD二次开发的时候如果想进行断点调试,众所周知,在VS环境里设置断点后直接启动类库项目就好了,只需要在启动项属性里设置下"启动外部程序&quo ...

  7. 安卓手机Charles抓包显示unknown原因及解决办法

    假如你按照网上的教程,在配置好代理的IP地址和端口号,下载并安装了证书,抓包仍然显示unnown的话,你要去找下安卓手机怎么信任证书.ios会直接弹窗.安卓手机不会,以小米10为例,你需要在设置里面搜 ...

  8. Android开发使用Glide获取图片背景色淡绿色解决办法

    第一次写博客,文笔不好,请大家多多关照,欢迎拍砖 在Android开发中,常用的加载图片工具有,Glide,Picasso,Fresco,其中Glide和Picasso使用方法极为相似,相对于Pica ...

  9. Vue微信网页开发,输入法顶开一部分屏幕的解决办法

    前言: 1 这个输入法坑主要是在普通键盘和安全键盘的切换上,测试下来从账号切换到密码的安全键盘,比较老的安卓系统有概率屏幕被安全输入法顶开,苹果貌似也有这种问题.但是在我朋友的比较新的安卓系统上,却基 ...

最新文章

  1. (转)__declspec(dllimport)和__declspec(dllexport)的区别,以及有关c/c++调用约定
  2. poj 1390(消除方块(blocks))
  3. 第二百五十三节,Bootstrap项目实战-资讯
  4. Chapter4:Using Standard Control(学习)
  5. 高级软件工程第一次作业--准备
  6. 数据粒度的上卷和下钻
  7. Spring-beans-BeanWrapper
  8. 怎样在php中制作电子相册,电子相册制作 如何制作电子相册带音乐和文字
  9. windows下用linux系统,如何在Windows下使用Linux操作系统
  10. 【模糊神经网络】基于simulink的模糊神经网络控制器设计
  11. java实现计算器功能_用java实现计算器功能
  12. EVO Evaluation of SLAM 4 --- ORB-SLAM3 编译和利用数据集运行
  13. 汽车电子控制器(ECU)的硬件设计流程
  14. clob informix java_informix如何插入clob
  15. DOS基础使用专题(强烈推荐)2
  16. 计算机网络定义记不住,记不住是怎么回事?——记忆是个神奇的小东西
  17. 爬取微信公众号详情页
  18. 乐普生物通过港交所聆讯:在研4种核心产品,平安等为股东
  19. Delphi王者归来!2018年Delphi精英奖揭晓!
  20. 【Python脚本进阶】2.1、端口扫描器(上):TCP全连接扫描

热门文章

  1. LaTeX中π等小写希腊字母斜体转正体的方法
  2. 《与熊共舞》第一章--逆“风”而行
  3. Python 批量翻译图片 附详细代码
  4. Matlab绘制各种小波函数及尺度函数图
  5. 在VMware8.0下安装crux2.6
  6. c语言如何重命名文件夹,VC 复制移动删除重命名文件文件夹
  7. 15单片机通过WIFI模块ESP8266实现手机远程监控可燃气体浓度
  8. java final f的区别_Java中final、finally、finalize的简单区别,中等区别,详细区别(Lawliet 修改+注释版)...
  9. Apache Storm-2.0.0 Trident 新版
  10. 蒲江县实验中学计算机老师照片,上“新”!实验中学一批高能教师亮相!