组件导入

更新时间: 2024/03/15 18:26:23

圈组 Android UIKit 基于 Gradle 进行构建,您可以通过添加远端仓库依赖或本地代码依赖的方式,将所需组件快速导入到您的项目中。

  • 添加远端仓库依赖:适用于采用圈组 UIKit 默认界面的集成。
  • 添加本地代码依赖:适用于通过圈组 UIKit 进行界面自定义的集成。

前提条件

已准备如下开发环境/工具:

实现流程

方式1 添加远端仓库依赖

本节以会话列表组件为例,介绍如何采用添加远端依赖的方式,将该组件导入到您的项目中,进行项目构建。

  1. 在 app 目录下的build.gradle中添加远端依赖。

    javadependencies {
    
        //会话消息组件(聊天界面,包括单聊和群聊)
        api 'com.netease.yunxin.kit.qchat:qchatkit-ui:${LATEST_VERSION}'
    
    }
    
    

    如果是 kotlin 脚本配置,在应用根目录下,打开build.gradle.kts,声明云信 IM UIKit 代码仓库。

    javadependencies {
        api("com.netease.yunxin.kit.qchat:qchatkit-ui:${LATEST_VERSION}")
    }
    
    
    • 引入圈组组件前需确保已联系商务经理开通圈组功能,否则将报 403 错误码。
    • 上述示例代码中的${LATEST_VERSION}表示版本号,仅用于示例。

  2. 在项目根目录下,打开gradle.propertes, 修改资源依赖配置。

    javaandroid.nonTransitiveRClass=false
    

    如果导入之后,出现资源找不到的问题,请修改此处配置。
    IM UIKit 模块化设计,所以存在资源依赖,以减少包体积。

方式2:添加本地代码依赖

本节介绍如何通过添加本地代码依赖的方式,将所需的 IM UIKit 组件导入到您的项目。

  1. 前往云信开源代码仓库,下载 qchat-uikit-android 源码组件到本地。

  2. 在 Android Studio 中打开工程后,依次点击 File > New > Import Module,选择您需要的组件导入,或者将组件直接复制到您的项目中。

    开源工程中包括的源码组件如下:

    组件 说明
    qchatkit-ui 圈组组件(包括服务列表、频道会话、频道管理、身份组、身份组管理等页面)
  3. 在项目根目录下,打开gradle.propertes, 修改属性资源依赖配置。

    javaandroid.nonTransitiveRClass=false
    

    如果导入之后,出现资源找不到的问题,请修改此处配置。
    QChat UIKit 模块化设计,所以存在公共资源依赖,以减少包体积。


  4. 在 Android Studio 项目根目录下,打开settings.gradle,添加依赖组件。

    如果第 2 步操作采用导入方式,会自动添加依赖组件,此时只需要检查即可。

    java
    include ':app'
    //添加您需要的组件即可
    include ':qchatkit-ui'
    
    

    如果是 kotlin 脚本配置,在项目根目录下,打开settings.gradle.kts,进行添加。

    kotlininclude(":app")
    include(":qchatkit-ui")
    include(":qchatkit")
    
  5. 在 Android Studio 项目应用目录下,打开app/build.gradle,添加依赖组件。

    java//添加您需要的组件即可
    api(project(":qchatkit-ui"))
    
    
  6. 在manifest文件中配置相关主题。UIKIt中采用的主题为Theme.MaterialComponents.Light.NoActionBar,你可以继承该主题来设置相关主题配置,也可以参考Demo工程中主题设置(qchat-uikit-android/app/src/main/res/vaules/Themes.xml)

    java
     <application android:name=".QChatApplication"
        android:requestLegacyExternalStorage="true"
        android:allowNativeHeapPointerTagging="false"
        android:networkSecurityConfig="@xml/network_security_config"
        android:theme="@style/Theme.Xkit">
        
        ......
    
    
        </application>
    
    
    
    

防止代码混淆

代码混淆是指使用简短无意义的名称重命名已存在的类、方法、属性等,增加逆向工程的难度,保障 Android 程序源码的安全性。

为了避免因上述的重命名而导致调用 IM UIKit 异常,请在 proguard-rules.pro 文件中加入以下代码,将 NIM SDK 和 IM UIKit 的相关类加入不混淆名单。

java## NIM SDK 防混淆
-dontwarn com.netease.nim.**
-keep class com.netease.nim.** {*;}

-dontwarn com.netease.nimlib.**
-keep class com.netease.nimlib.** {*;}

-dontwarn com.netease.share.**
-keep class com.netease.share.** {*;}

-dontwarn com.netease.mobsec.**
-keep class com.netease.mobsec.** {*;}

## 如果你使用全文检索插件,需要加入
-dontwarn org.apache.lucene.**
-keep class org.apache.lucene.** {*;}

## 圈组 UIKit 防混淆
-dontwarn com.netease.yunxin.kit.**
-keep class com.netease.yunxin.kit.** {*;}
-keep public class * extends com.netease.yunxin.kit.corekit.XKitInitOptions
-keep class * implements com.netease.yunxin.kit.corekit.XKitService {*;}


## glide 4
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
    **[] $VALUES;
    public *;
}


## 如果你使用全文检索插件,需要加入
-dontwarn org.apache.lucene.**
-keep class org.apache.lucene.** {*;}

## 如果你开启数据库功能,需要加入
-keep class net.sqlcipher.** {*;}

后续步骤

导入组件后,需进行初始化

此文档是否对你有帮助?
有帮助
去反馈
  • 前提条件
  • 实现流程
  • 方式1 添加远端仓库依赖
  • 方式2:添加本地代码依赖
  • 防止代码混淆
  • 后续步骤