集成 Flutter SDK
更新时间: 2024/12/27 15:44:45
网易云信即时通讯(NetEase IM)SDK V10(以下简称 NIM SDK)为 Flutter 开发者提供完善的即时通信功能开发能力,屏蔽其内部复杂细节,对外提供较为简洁的 API,方便您快速集成即时通信功能。
目前云信支持 Flutter 全平台(Android、iOS、MacOS、Windows、Web)的即时通讯 IM SDK,帮助您一套代码,全平台运行。
本文介绍如何快速将 NIM Flutter SDK 集成到您的项目中。
环境要求
集成 NIM Flutter SDK 前,请确保您的本地开发环境满足以下要求:
- Dart SDK 版本:3.0.0 ~ 4.0.0
- 项目开发环境:
Android | iOS | MacOS | Windows | Web |
---|---|---|---|---|
kotlin-gradle-plugin |
确保已安装 python 的 requests 库 | 暂无环境要求 | 暂无环境要求 |
集成 SDK
NIM Flutter SDK 已发布到 Dart 和 Flutter 项目提供包管理服务的平台 pub.dev 库,您可以通过配置 pubspec.yaml
自动下载更新。
-
在项目的
pubspec.yaml
文件中添加以下依赖。YAML
dependencies: nim_core_v2: ^10.3.1
以上示例中的 10.3.1 可以更换为其他版本号,具体请参考 更新日志,推荐您使用最新版本的 SDK。
-
通过 Shell 或者 IDE 执行以下命令,下载依赖包。
Bash
flutter pub get
运行 SDK
该步骤仅适用 Windows 平台,其他平台可直接跳过此步骤。
将 SDK 复制到项目工程的 run 目录下,然后运行 SDK。
例如:将 “xxx\nim_core_v2\nim_core_v2_windows\nim_sdk\bin” 中的文件复制到 “xxx\nim_core_v2\nim_core_v2\example\build\windows\x64\runner\Debug” 中。
防混淆配置
该步骤仅适用 Android 平台,其他平台可直接跳过此步骤。
-
使用
kotlin-gradle-plugin
,在工程根目录的build.gradle
文件中添加以下配置。JSON
buildscript { ext.kotlin_version = '1.9.0' repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.3.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
-
在
app/build.gradle
中,配置packagingOptions
,示例如下:Groovy
/ 新增:启用 kotlin 插件 apply plugin: 'kotlin-android' android { // 其他配置 ... packagingOptions { pickFirst 'lib/x86/libc++_shared.so' pickFirst 'lib/x86_64/libc++_shared.so' pickFirst 'lib/armeabi-v7a/libc++_shared.so' pickFirst 'lib/arm64-v8a/libc++_shared.so' } }
更多信息请参考 Android 的 代码防混淆。
下一步
完成 SDK 集成后,您可以尝试 初始化。
常见问题
编译错误
当编译项目时,出现类似以下报错信息时:
您需要在 Windows 目录下的 CMakeList.txt 文件中添加以下代码,以解决上述问题。
function(APPLY_STANDARD_SETTINGS TARGET)
target_compile_features(${TARGET} PUBLIC cxx_std_17)
target_compile_options(${TARGET} PRIVATE /W4 /WX- /wd"4100")
target_compile_options(${TARGET} PRIVATE /EHsc)
target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0")
target_compile_definitions(${TARGET} PRIVATE "$<$<CONFIG:Debug>:_DEBUG>")
endfunction()