简体   繁体   English

Android中的OpenTok + Twilio SDK冲突

[英]OpenTok + Twilio SDK conflicts in Android

I am developing a phonegap app for Android and iOS. 我正在为Android和iOS开发一个phonegap应用。 I am also using Twilio and OpenTok SDK. 我也在使用Twilio和OpenTok SDK。 After struggling some time I could make it both SDK to work in IOS. 经过一段时间的努力,我可以使两个SDK都可以在IOS中使用。 There was a problem with openssl libraries, because both sdk use it. openssl库存在问题,因为两个sdk都使用它。

However, when testing on Android, I have linker problems. 但是,在Android上进行测试时,出现链接器问题。 Linker is not able to find opentok.so, in presence of twilio-native.so. 在twilio-native.so存在的情况下,Linker无法找到opentok.so。 After removing twilio references, it all works correctly. 删除twilio引用后,它们都可以正常工作。

I have tested it on Android 4.3 and Android 5.0. 我已经在Android 4.3和Android 5.0上进行了测试。

I/OTPlugin( 7998): initSession
I/OTPlugin( 7998): created new session with data: ["45149131","1_MX40NTE0OTEzMX5-MTQ0MTAyOTY2NTEyMX5xR1c2WGpJTlozNW1QODM4NjBQVlAyYUJ-UH4"]
W/dalvikvm( 7998): Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lcom/opentok/android/Session;
W/System.err( 7998): java.lang.UnsatisfiedLinkError: Couldn't load opentok from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.biotech.treatmd-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.biotech.treatmd-2, /vendor/lib, /system/lib]]]: findLibrary returned null
W/System.err( 7998): at java.lang.Runtime.loadLibrary(Runtime.java:355)
W/System.err( 7998): at java.lang.System.loadLibrary(System.java:525)
W/System.err( 7998): at com.opentok.android.Session.<clinit>(Session.java:46)
W/System.err( 7998): at com.tokbox.cordova.OpenTokAndroidPlugin.execute(OpenTokAndroidPlugin.java:394)
W/System.err( 7998): at org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:84)
W/System.err( 7998): at org.apache.cordova.PluginManager.exec(PluginManager.java:151)
W/System.err( 7998): at org.apache.cordova.CordovaBridge.jsExec(CordovaBridge.java:63)
W/System.err( 7998): at org.apache.cordova.ExposedJsApi.exec(ExposedJsApi.java:40)
W/System.err( 7998): at android.webkit.JWebCoreJavaBridge.nativeServiceFuncPtrQueue(Native Method)
W/System.err( 7998): at android.webkit.JWebCoreJavaBridge.nativeServiceFuncPtrQueue(Native Method)
W/System.err( 7998): at android.webkit.JWebCoreJavaBridge.handleMessage(JWebCoreJavaBridge.java:113)
W/System.err( 7998): at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err( 7998): at android.os.Looper.loop(Looper.java:213)
W/System.err( 7998): at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:819)
W/System.err( 7998): at java.lang.Thread.run(Thread.java:841)

As you can see in the logs, loader is unable to find library. 如您在日志中所见,加载程序无法找到库。 After removing twilio references, there is no problem. 删除twilio引用后,没有问题。

 ── src
    ├── com
    │   ├── biotech
    │   │   └── treatmd
    │   │       └── MainActivity.java
    │   ├── phonegap
    │   │   └── plugins
    │   │       └── twilioclient
    │   │           ├── IncomingConnectionActivity.java
    │   │           └── TCPlugin.java
    │   ├── pushwoosh
    │   │   └── plugin
    │   │       └── pushnotifications
    │   │           └── PushNotifications.java
    │   └── tokbox
    │       └── cordova
    │           └── OpenTokAndroidPlugin.java
    └── org
        └── apache
            └── cordova
                ├── device
                │   └── Device.java
                ├── dialogs
                │   └── Notification.java
                    └── statusbar
                    └── StatusBar.java

So here is a part of the android platform folder. 因此,这是android platform文件夹的一部分。

├──  libs
│   ├── Pushwoosh.jar
│   ├── android-support-v4.jar
│   ├── armeabi
│   │   ├── libopentok.so
│   │   └── libtwilio-native.so
│   ├── armeabi-v7a
│   │   └── libtwilio-native.so
│   ├── mips
│   │   └── libtwilio-native.so
│   ├── opentok-android-sdk-2.3.1.jar
│   ├── twilioclient-android.jar
│   └── x86
│       ├── libopentok.so
│       └── libtwilio-native.so

Here you can see the libs folder. 在这里您可以看到libs文件夹。 As I said before, when I remove twilio libs, OpenTok works perfect. 如前所述,当我删除twilio库时,OpenTok可以完美运行。

The problem I was having with iOS is that both sdk use libssl, and they are different version. 我在iOS上遇到的问题是,两个sdk都使用libssl,并且它们是不同的版本。 The solution was delete twilio openssl library. 解决的办法是删除twilio openssl库。 (Even in that case, I think the only problem was that twilio brokes, not openTok, so it is weird though). (即使在那种情况下,我认为唯一的问题是twilio坏了,而不是openTok,所以这很奇怪)。

I have come up with the solution. 我想出了解决方案。 Twilio cordova plugin for android is incompatible with newer version of twilio sdk. 适用于Android的Twilio Cordova插件与较新版本的twilio sdk不兼容。 So you have to use twilio sdk version 1.2.2 . 因此,您必须使用twilio sdk版本1.2.2 Also, in order to make both plugin work together, you have to use opentok sdk version 2.5.0. 另外,为了使两个插件协同工作,您必须使用opentok sdk版本2.5.0。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM