Android 中的 OpenTok + Twilio SDK 冲突
OpenTok + Twilio SDK conflicts in Android
我正在为 Android 和 iOS 开发一个 phonegap 应用程序。我也在使用 Twilio 和 OpenTok SDK。经过一段时间的努力,我可以让这两个 SDK 在 IOS 中工作。 openssl 库有问题,因为两个 sdk 都使用它。
但是,在 Android 上进行测试时,我遇到了链接器问题。在存在 twilio-native.so 的情况下,链接器无法找到 opentok.so。删除 twilio 引用后,一切正常。
我已经在 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)
如您在日志中所见,加载程序无法找到库。去掉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
这里是 android 平台文件夹的一部分。
├── 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
在这里你可以看到libs文件夹。正如我之前所说,当我删除 twilio 库时,OpenTok 完美运行。
我在使用 iOS 时遇到的问题是两个 sdk 都使用 libssl,而且它们是不同的版本。解决方案是删除 twilio openssl 库。 (即使在那种情况下,我认为唯一的问题是 twilio 坏了,而不是 openTok,所以这很奇怪)。
我想出了解决办法。
android 的 Twilio cordova 插件与较新版本的 twilio sdk 不兼容。所以你必须使用twilio sdk version 1.2.2。
此外,为了使两个插件一起工作,您必须使用 opentok sdk 版本 2.5.0。
我正在为 Android 和 iOS 开发一个 phonegap 应用程序。我也在使用 Twilio 和 OpenTok SDK。经过一段时间的努力,我可以让这两个 SDK 在 IOS 中工作。 openssl 库有问题,因为两个 sdk 都使用它。
但是,在 Android 上进行测试时,我遇到了链接器问题。在存在 twilio-native.so 的情况下,链接器无法找到 opentok.so。删除 twilio 引用后,一切正常。
我已经在 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)
如您在日志中所见,加载程序无法找到库。去掉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
这里是 android 平台文件夹的一部分。
├── 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
在这里你可以看到libs文件夹。正如我之前所说,当我删除 twilio 库时,OpenTok 完美运行。
我在使用 iOS 时遇到的问题是两个 sdk 都使用 libssl,而且它们是不同的版本。解决方案是删除 twilio openssl 库。 (即使在那种情况下,我认为唯一的问题是 twilio 坏了,而不是 openTok,所以这很奇怪)。
我想出了解决办法。 android 的 Twilio cordova 插件与较新版本的 twilio sdk 不兼容。所以你必须使用twilio sdk version 1.2.2。 此外,为了使两个插件一起工作,您必须使用 opentok sdk 版本 2.5.0。