Problemas y soluciones encontrados en el desarrollo de Android usando Bmob

Recientemente, tuve la tarea de usar Android para conectarme a Bmob. Durante el proceso, encontré muchos problemas. Resumí este artículo leyendo las soluciones de problemas de varios bloggers y lo considero como mis propias notas de estudio.

1. La recomendación oficial es importar el SDK automáticamente.

existeappdebuild.gradleadición en oración依赖文件

dependencies {
    implementation 'io.github.bmob:android-sdk:3.8.20'
    implementation 'io.reactivex.rxjava2:rxjava:2.2.8'
    implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
    implementation 'com.squareup.okhttp3:okhttp:4.8.1'
    implementation 'com.squareup.okio:okio:2.2.2'
    implementation 'com.google.code.gson:gson:2.8.5'
}

Nota:

[1], a partir de v3.6.8-rc2, el SDK de datos en el almacén remoto incluye libbmob.so y los archivos de recursos necesarios para los componentes de actualización automática. Los desarrolladores ya no necesitan configurar libbmob.so, agregar archivos jar dependientes o copiar archivos de recursos para componentes actualizados automáticamente, solo necesitan agregar las siguientes dependencias.

[2] Cada versión de im depende de una versión específica de bmob-sdk:

  • bmob-im:1.1.8--->bmob-sdk:3.3.5
  • bmob-im:1.1.9--->bmob-sdk:3.4.3
  • bmob-im:2.0.1--->bmob-sdk:3.4.6-0304
  • bmob-im:2.0.2--->bmob-sdk:3.4.6-0304
  • bmob-im:2.0.3--->bmob-sdk:3.4.6
  • bmob-im:2.0.4--->bmob-sdk:3.4.6
  • bmob-im:2.0.5--->bmob-sdk:3.4.7-aar
  • bmob-im:2.0.6--->bmob-sdk:3.5.0

en

  • bmob-sdk:3.4.6-0304Es una versión de transición de Bmob Android SDK, utilizada principalmente para NewIM_v2.0.1 y v2.0.2.
  • bmob-sdk:3.4.6Los paquetes de dependencia relevantes se pueden ver en los comentarios [3]

[3], bmob-sdk:3.4.6 depende de los siguientes paquetes:

implementation 'cn.bmob.android:bmob-sdk:3.4.6'
implementation 'com.squareup.okhttp:okhttp:2.4.0'//CDN文件服务使用okhttp相关包进行文件的上传和下载(必填)
implementation 'com.squareup.okio:okio:1.4.0'

[4], bmob-sms es adecuado para desarrolladores que solo necesitan usar la función Bmob SMS, y bmob-sdk contiene la función SMS de bmob-sms, no la agregue repetidamente.

[5], repositorio oficial de BmobSDK:bmob-android-sdk, los desarrolladores pueden ir a este repositorio para ver las últimas versiones.SDK , haremos todo lo posible para mantenernos actualizados con el SDK publicado en el sitio web oficial.

 

2. Importación manual

        Método de importación manual: descargue la versión de Android del SDK para servicios de datos en el Centro de descarga de SDK de Bmob.

                 Debido a que la descarga del sitio web oficial requiere ingresar a GitHub, es posible que algunos estudiantes no puedan ingresar. Aquí compartiré mi disco de red Baidu. Si quieres

                 Usted mismo puede obtener el SDK oficial:

                 tener un> --Compartir desde el súper miembro V1 de Baidu Netdisk 

        Después de la descarga, copie el contenido de la carpeta libs en la carpeta SDK importada localmente al directorio libs del proyecto.

7a18538227d646a4b0905a51c134ee21.png

26620d594c3d428ca97e343f05e3ef2f.png

El androidx-core-1.0.0 marcado en la imagen informa un error después de la importación. La información del error tiene que ver con androidx-core-1.0.0. Debería entrar en conflicto con la versión existente, por lo que no es necesario importarlo. No se informa ningún error después de importar okio-2.1.0, pero la actividad que opera con datos de bmob fallará, por lo que el paquete jar okio-2.1.0 no se puede agregar localmente. Los detalles se darán más adelante.

 


3. Después de que la importación sea exitosa, agregue dependencias.

  1. Agregue la configuración del directorio de la biblioteca SO en el archivo de app:buid.gradle

    android {
        sourceSets {
            main.jniLibs.srcDirs = ['libs']
       }
    }
    
    
    
    //这里要注意,原因后文说
    dependencies {
        implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.5'
        implementation 'com.squareup.okio:okio:3.0.0'
    }
  2. Haga clic en Sincronizar para sincronizar la configuración.

4. Configurar AndroidManifest.xml

      Añade los permisos correspondientes en el archivo AndroidManifest.xml de tu aplicación:


<!--允许联网 -->
<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" />

<?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="cn.bmob.example"
        android:versionCode="1"
        android:versionName="1.0">

    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17"/>

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        <activity
            android:name="cn.bmob.example.MainActivity"
            android:screenOrientation="portrait"
            android:label="@string/app_name">

                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
    </application>
</manifest>

5.Configurar el proveedor de contenido

<application>
···
<provider
    android:name="cn.bmob.v3.util.BmobContentProvider"
    android:authorities="你的应用包名.BmobContentProvider">
</provider>
···
</application>

6.Inicializar BmobSDK

Inicialice la función Bmob en el método onCreate() de la Aplicación iniciada por su aplicación. El código se ve así:


       //提供以下两种方式进行初始化操作:

        //第一:默认初始化
        Bmob.initialize(this, "Your Application ID");
        // 注:自v3.5.2开始,数据sdk内部缝合了统计sdk,开发者无需额外集成,传渠道参数即可,不传默认没开启数据统计功能
        //Bmob.initialize(this, "Your Application ID","bmob");

        //第二:自v3.4.7版本开始,设置BmobConfig,允许设置请求超时时间、文件分片上传时每片的大小、文件的过期时间(单位为秒),
        //BmobConfig config =new BmobConfig.Builder(this)
        设置appkey
        //.setApplicationId("Your Application ID")
        请求超时时间(单位为秒):默认15s
        //.setConnectTimeout(30)
        文件分片上传时每片的大小(单位字节),默认512*1024
        //.setUploadBlockSize(1024*1024)
        文件的过期时间(单位为秒):默认1800s
        //.setFileExpiration(2500)
        //.build();
        //Bmob.initialize(config);

La configuración termina aquí, a continuación se muestran algunos errores que encontré.

①Lorg/reactivestreams/Publisher
Solución: Falta el paquete reactive-streams.jar

//在app的build.gradle中添加如下依赖
implementation “org.reactivestreams:reactive-streams:1.0.2”


②Resolución fallida de: Lokhttp3/MediaType;
Solución: el paquete okio se debe importar mediante la implementación y no se puede importar localmente

//在app的build.gradle中添加如下依赖
implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.5'
implementation 'com.squareup.okio:okio:3.0.0'


————————————————
Declaración de derechos de autor: este artículo cita el artículo original del blogger de CSDN "little-cheng", enlace original : https://blog.csdn.net/m0_46356518/article/details/106483100, ¡gracias aquí!

 

Supongo que te gusta

Origin blog.csdn.net/Walch123/article/details/127758056
Recomendado
Clasificación