Tencent-RTC / TRTC_Flutter

High-quality Interactive Audio/Video Flutter SDK
https://trtc.io/
75 stars 33 forks source link

单纯引用,Android平台 无法使用 webview_flutter #17

Closed akechi1980 closed 2 years ago

akechi1980 commented 3 years ago

【Android】-【1.0.2 , 1.0.4】与 webview_flutter 不兼容。 鉴于 webview_flutter 是 flutter.dev 官方的plugin plus TRTC plugin官方的issus指向的是贵站 所以在这边提出 备注:https://pub.dev/packages/webview_flutter https://pub.dev/packages/tencent_trtc_cloud

【当前现象】:只是添加引用TRTC插件,导致Android平台 无法使用 webview_flutter 【测试环境】 flutter 2.0.4 - flutter 2.1.x webview_flutter2.0.x 【是否必现】:必现 【复现方法】: 添加引用 在 pubspec.yaml 加入 tencent_trtc_cloud: ^1.0.4

实例代码


import 'dart:async';
import 'dart:io' show Platform;

import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: WebViewExample(),
    );
  }
}

class WebViewExample extends StatefulWidget {
  @override
  WebViewExampleState createState() => WebViewExampleState();
}

class WebViewExampleState extends State<WebViewExample> {
  final Completer<WebViewController> _controller =
  Completer<WebViewController>();

  @override
  void initState() {
    super.initState();
    // Enable hybrid composition.//即使删除这句话亦出错
    if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();
  }

  @override
  Widget build(BuildContext context) {
    return WebView(
      initialUrl: 'https://flutter.dev',
    );

  }
}

只是官方的例子 删除 tencent_trtc_cloud: ^1.0.4 引用,则能正常使用 webview。

稍微挖了下,似乎和Flutter的2中Android渲染方式有关 : Virtual displays and Hybrid composition. 但是WebView端禁止 Enable hybrid composition 也没有改善

备注: if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView(); 这句话注释即为关闭 hybrid composition

c1avie commented 3 years ago

我们定位一下这个问题

c1avie commented 3 years ago

我们这边定位到是minSdkVersion定义的版本不一致导致的问题,demo这里把minSdkVersion 改为了19,应该可以规避这个问题了,麻烦再试一下。

c1avie commented 3 years ago

@akechi1980
image

akechi1980 commented 3 years ago

这个已经修改了。第一时间我们就想到了这个,我这边的情况应该是已经修改后的,还是一样的。

c1avie commented 3 years ago

你用这个demo再集成webview测试一下,我这边测试是可以的

akechi1980 commented 3 years ago

这是我的测试代(具体Debug环境是虚拟的 Android 9.0(GooglePlay)的机器。): demoq.zip 如果你们那边是可以的(我们这边,苹果IOS环境本来就是可以的), 你们这边的开发环境的具体情况能告知一下吗? 系统: 开发工具(IDE): 版本号: Flutter版本号: 正常的测试环境: 虚拟机 / 真机 型号? (Android版本): webview_flutter 版本:

希望不吝赐教。。。。

c1avie commented 3 years ago

你的代码也可以正常运行。 image

c1avie commented 3 years ago

请使用安卓真机进行测试,把build目录删掉,重新执行flutter run试试

akechi1980 commented 3 years ago

除了是用MacOS,似乎差别并不大,一会我用MacOS环境确认一下 方便的话请用加上 --verbose 谢谢, 我这边的情况

doctor --verbose
[√] Flutter (Channel stable, 2.2.1, on Microsoft Windows [Version 10.0.18362.175], locale zh-CN)
    • Flutter version 2.2.1 at E:\Program Files\SDK\flutter
    • Framework revision 02c026b03c (12 days ago), 2021-05-27 12:24:44 -0700
    • Engine revision 0fdb562ac8
    • Dart version 2.13.1

[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at E:\Android\Sdk
    • Platform android-30, build-tools 30.0.3
    • Java binary at: E:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

[√] Android Studio
    • Android Studio at E:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • android-studio-dir = E:\Program Files\Android\Android Studio
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174)

[√] Connected device (2 available)
    • AOSP on IA Emulator (mobile) • emulator-5554 • android-x86    • Android 9 (API 28) (emulator)
    • Chrome (web)                 • chrome        • web-javascript • Google Chrome 91.0.4472.77

• No issues found!
Process finished with exit code 0
c1avie commented 3 years ago

![Uploading image.png…]()

c1avie commented 3 years ago

image