Tencent-RTC / TRTC_Flutter

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

单纯引用,Android平台 无法使用 flutter_inappwebview #18

Closed akechi1980 closed 3 years ago

akechi1980 commented 3 years ago

【TRTC版本】-【1.0.2 , 1.0.4】与 flutter_inappwebview 不兼容。 鉴于 https://github.com/c1avie/TRTCSimpleDemo/issues/12 的提示,尝试使用 flutter_inappwebview , 来绕开无法使用webview( https://github.com/c1avie/TRTCSimpleDemo/issues/17 )的问题。但是很不幸,依然会出问题。

URL:https://pub.dev/packages/flutter_inappwebview/install

【当前现象】: 只是添加引用TRTC插件,flutter_inappwebview 的Demo程序直接爆出出错信息后,崩溃退出.

√  Built build\app\outputs\flutter-apk\app-debug.apk.
Installing build\app\outputs\flutter-apk\app.apk...
...
com.tencent.liteav.basic.util.TXCCommonUtil.nativeGetSDKVersion() (tried Java_com_tencent_liteav_basic_util_TXCCommonUtil_nativeGetSDKVersion and Java_com_tencent_liteav_basic_util_TXCCommonUtil_nativeGetSDKVersion__)
...
W/cr_CrashFileManager( 9684): /data/user/0/com.exp.flutter_webview.flutter_webview/cache/WebView/Crash Reports does not exist or is not a directory
...
W/Native-LiteAV( 9684): load library txffmpeg from system path 
W/Native-LiteAV( 9684): load library : java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.exp.flutter_webview.flutter_webview-CLYnXS1q4f2Yx3iNldM6bg==/base.apk"],nativeLibraryDirectories=[/data/app/com.exp.flutter_webview.flutter_webview-CLYnXS1q4f2Yx3iNldM6bg==/lib/x86, /data/app/com.exp.flutter_webview.flutter_webview-CLYnXS1q4f2Yx3iNldM6bg==/base.apk!/lib/x86, /system/lib]]] couldn't find "libtxffmpeg.so"
W/Native-LiteAV( 9684): load library txffmpeg false
W/Native-LiteAV( 9684): load library traeimp-rtmp from system path 
W/Native-LiteAV( 9684): load library : java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.exp.flutter_webview.flutter_webview-CLYnXS1q4f2Yx3iNldM6bg==/base.apk"],nativeLibraryDirectories=[/data/app/com.exp.flutter_webview.flutter_webview-CLYnXS1q4f2Yx3iNldM6bg==/lib/x86, /data/app/com.exp.flutter_webview.flutter_webview-CLYnXS1q4f2Yx3iNldM6bg==/base.apk!/lib/x86, /system/lib]]] couldn't find "libtraeimp-rtmp.so"
W/Native-LiteAV( 9684): load library traeimp-rtmp false
W/Native-LiteAV( 9684): load library liteavsdk from system path 
W/Native-LiteAV( 9684): load library : java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.exp.flutter_webview.flutter_webview-CLYnXS1q4f2Yx3iNldM6bg==/base.apk"],nativeLibraryDirectories=[/data/app/com.exp.flutter_webview.flutter_webview-CLYnXS1q4f2Yx3iNldM6bg==/lib/x86, /data/app/com.exp.flutter_webview.flutter_webview-CLYnXS1q4f2Yx3iNldM6bg==/base.apk!/lib/x86, /system/lib]]] couldn't find "libliteavsdk.so"
W/Native-LiteAV( 9684): load library liteavsdk false
E/flutter_webvie( 9684): No implementation found for void com.tencent.liteav.audio.impl.TXCAudioEngineJNI.nativeCacheClassForNative() (tried Java_com_tencent_liteav_audio_impl_TXCAudioEngineJNI_nativeCacheClassForNative and Java_com_tencent_liteav_audio_impl_TXCAudioEngineJNI_nativeCacheClassForNative__)
E/AndroidRuntime( 9684): FATAL EXCEPTION: TRTCCloudApi
E/AndroidRuntime( 9684): Process: com.exp.flutter_webview.flutter_webview, PID: 9684
E/AndroidRuntime( 9684): java.lang.UnsatisfiedLinkError: No implementation found for void com.tencent.liteav.audio.impl.TXCAudioEngineJNI.nativeCacheClassForNative() (tried Java_com_tencent_liteav_audio_impl_TXCAudioEngineJNI_nativeCacheClassForNative and Java_com_tencent_liteav_audio_impl_TXCAudioEngineJNI_nativeCacheClassForNative__)
E/AndroidRuntime( 9684):    at com.tencent.liteav.audio.impl.TXCAudioEngineJNI.nativeCacheClassForNative(Native Method)
E/AndroidRuntime( 9684):    at com.tencent.liteav.audio.impl.TXCAudioEngineJNI.<clinit>(TXCAudioEngineJNI.java:27)
E/AndroidRuntime( 9684):    at com.tencent.liteav.audio.impl.TXCAudioEngineJNI.nativeSetAudioPlayoutTunnelEnabled(Native Method)
E/AndroidRuntime( 9684):    at com.tencent.liteav.trtc.impl.TRTCCloudImpl$4.run(TRTCCloudImpl.java:645)
E/AndroidRuntime( 9684):    at android.os.Handler.handleCallback(Handler.java:873)
E/AndroidRuntime( 9684):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 9684):    at android.os.Looper.loop(Looper.java:193)
E/AndroidRuntime( 9684):    at android.os.HandlerThread.run(HandlerThread.java:65)
I/VideoCapabilities( 9684): Unsupported profile 4 for video/mp4v-es
I/Process ( 9684): Sending signal. PID: 9684 SIG: 9
**Lost connection to device.**

【测试环境】 flutter_inappwebview 5.3.2

【是否必现】:必现 【复现方法】: 1,https://github.com/pichillilorenzo/flutter_inappwebview 下载 flutter_inappwebview 的Demo程序 2,在VM中删除APP(如果存在) 3,Flutter Clean ,pub get 4,尝试运行 (Demo应该是OK的) 5,引入 tencent_trtc_cloud 依赖,根据贵站的说明,对AndroidManifest.xml做必要的修改 6,重复 2,3,步骤,运行,应该会出现如上错误。

PS: 我们这边同样尝试了 flutter_webview_plugin 0.4.0 URL:https://pub.dev/packages/flutter_webview_plugin/example 1,Example可以跑 2,flutter pub add tencent_trtc_cloud 加入插件 继续 PlatformException

估计 webview_flutter_plus URL:https://pub.dev/packages/webview_flutter_plus webviewx 0.0.4 URL:https://pub.dev/packages/webviewx 由于是 flutter webview 的扩展,估计应该不行,未进行尝试

【要望】 1,鉴于webview_flutter 是 flutter.dev的plugin,希望能够优先解决共存问题( https://github.com/c1avie/TRTCSimpleDemo/issues/17 ) 因某些特定业务(比如支付),依赖第三方web站点来实现某些功能是刚需(个人理解)。

2,如果实在无法解决webview_flutter ,望提供某些共存的开发经验 A。webview plugin 能够和trtccloud共存 ,比如(flutter版本/plug版本/Android sdk等等.但不限于)的开发环境情况? B。或者说某个特定plugin能够实现类似 webview 的机能,并能与trtc共存 ?

如能解决,不胜感激