【发布时间】:2017-11-15 09:43:25
【问题描述】:
我正在开发视频会议应用程序,所以我需要为用户创建一个独立的会议室。所以我正在使用适用于 android 的 opentok (tokbox) sdk。以下是我为 opentok 编译的 gradle 文件:
compile 'com.opentok.android:opentok-android-sdk:2.12.0'
compile 'com.tokbox:opentok-server-sdk:2.3.2'
现在我在 opentok 服务器 sdk (java) 的帮助下生成会话 ID 和令牌 ID。这是生成会话ID和令牌ID的代码。
//java code
OpenTok openTok = new OpenTok(Integer.parseInt(OpenTokConfig.API_KEY), OpenTokConfig.SECRET_KEY);
try {
SessionProperties sessionProperties = new SessionProperties.Builder().mediaMode(MediaMode.ROUTED).build();
Session session = openTok.createSession(sessionProperties);
sessionId = session.getSessionId();
//successfully we got the session id here
tokenId = openTok.generateToken(sessionId); //app crashed here
} catch (OpenTokException e) {
e.printStackTrace();
}
调试完这段代码,我们成功得到了session id,但是我遇到了生成tokenid的问题。此时App突然崩溃,它返回
`Caused by: java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.decodeBase64
at com.opentok.util.Crypto.decodeSessionId(Crypto.java:47)
at com.opentok.OpenTok.generateToken(OpenTok.java:131)
at com.opentok.OpenTok.generateToken(OpenTok.java:181)`
我已经深入调试到 opentok sdk 应用程序在此方法中崩溃
//class name is : Crypto
public static List<String> decodeSessionId(String sessionId) throws UnsupportedEncodingException {
sessionId = sessionId.substring(2);
sessionId = sessionId.replaceAll("-", "+").replaceAll("_", "/");
byte[] buffer = Base64.decodeBase64(sessionId); //app crashed in this line
sessionId = new String(buffer, "UTF-8");
return new ArrayList<String>(Arrays.asList(sessionId.split("~")));
}
我知道这个问题与解码问题有关。我在很多地方搜索过这个问题,但我没有得到任何关于这个问题的相关答案。Opentok 团队只是说升级你的 sdk。请给出正确的方向。
【问题讨论】:
-
我已经添加到 gradle 文件中,编译 'commons-codec:commons-codec:1.10',但没有运气
标签: java android opentok nosuchmethoderror tokbox