rongcloud/rongcloud-im-flutter-sdk

RongIMClient.init(RongAppKey);初始化sdk 失败

Closed this issue · 3 comments

为了快速解决问题,在寻求帮助的时候,请提供以下信息,方便我们快速定位问题

  • 本地 Flutter 版本信息
    Doctor summary (to see all details, run flutter doctor -v):
    [✓] Flutter (Channel v1.12.13-hotfixes, v1.12.13+hotfix.9, on Mac OS X 10.15.4
    19E266, locale zh-Hans-CN)
    [!] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    ✗ Android license status unknown.
    Try re-installing or updating your Android SDK Manager.
    See https://developer.android.com/studio/#downloads or visit
    https://flutter.dev/setup/#android-setup for detailed instructions.

[✓] Xcode - develop for iOS and macOS (Xcode 11.6)
[✓] Android Studio (version 4.0)
[!] VS Code (version 1.48.2)
✗ Flutter extension not installed; install from
https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[✓] Connected device (1 available)

! Doctor found issues in 2 categories.

  • 异常设备是 iOS 还是 Android,列出具体机型和系统
    Android 小米 8SE Android 10
  • 所调用的是什么 API 或者说是什么功能
    RongIMClient.init(RongAppKey)
  • 完整的报错信息或者问题描述
    E/MethodChannel#rongcloud_im_plugin: Failed to handle method call
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
    at io.rong.imlib.RongIMClient.initSDK(RongIMClient.java:445)
    at io.rong.imlib.RongIMClient.init(RongIMClient.java:665)
    at io.rong.imlib.RongIMClient.init(RongIMClient.java:646)
    at io.rong.flutter.imlib.RCIMFlutterWrapper.initRCIM(RCIMFlutterWrapper.java:440)
    at io.rong.flutter.imlib.RCIMFlutterWrapper.onFlutterMethodCall(RCIMFlutterWrapper.java:145)
    at io.rong.flutter.imlib.RongcloudImPlugin.onMethodCall(RongcloudImPlugin.java:21)
    at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:231)
    at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:93)
    at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:642)
    at android.os.MessageQueue.nativePollOnce(Native Method)
    at android.os.MessageQueue.next(MessageQueue.java:336)
    at android.os.Looper.loop(Looper.java:181)
    at android.app.ActivityThread.main(ActivityThread.java:7520)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

经断点 发现RongcloudImPlugin.java 中 获取context 为空RCIMFlutterWrapper.getInstance().saveContext(registrar.activity().getApplicationContext());
查找相关资料 发现flutter plugin 在flutter 1.12 release 用了新的api https://flutter.dev/docs/development/packages-and-plugins/plugin-api-migration

你尝试 debug 一下 这个 RongcloudImPlugin 如下代码,应该获取到的 context 是个 null
RCIMFlutterWrapper.getInstance().saveContext(registrar.activity().getApplicationContext());

所以这边可能需要您更换一下 context 的获取方式 registrar.context() 等方法

你尝试 debug 一下 这个 RongcloudImPlugin 如下代码,应该获取到的 context 是个 null
RCIMFlutterWrapper.getInstance().saveContext(registrar.activity().getApplicationContext());

所以这边可能需要您更换一下 context 的获取方式 registrar.context() 等方法

是的。debug context 为空。需要修改下RongcloudImPlugin代码。考虑到需求暂时放弃flutter 方式实现。使用原生来搞。