背景介绍

最近在使用 AndroidRTC 利用WebRtc屏幕共享时使用PeerConnectionFactory.initializeAndroidGlobals(context, true, true, true);这句代码时一直报错。

而且我在本地debug总是没有问题,但是测试一打包就崩溃,我就非常纳闷。

错误日志及错误分析

java.lang.UnsatisfiedLinkError: No implementation found for void org.webrtc.PeerConnectionFactory.nativeInitializeAndroidGlobals(android.content.Context, boolean) (tried Java_org_webrtc_PeerConnectionFactory_nativeInitializeAndroidGlobals and Java_org_webrtc_PeerConnectionFactory_nativeInitializeAndroidGlobals__Landroid_content_Context_2Z)
at org.webrtc.PeerConnectionFactory.nativeInitializeAndroidGlobals(Native Method) ~[na:0.0]
at org.webrtc.PeerConnectionFactory.initializeAndroidGlobals(PeerConnectionFactory.java:63) ~[na:0.0]
at org.webrtc.PeerConnectionFactory.initializeAndroidGlobals(PeerConnectionFactory.java:70) ~[na:0.0]
at com.focustech.android.studyfun.util.webrtc.SFWebRtcClient.<init>(SFWebRtcClient.java:409) ~[na:0.0]
at com.focustech.android.studyfun.activity.screenshare.ScreenShareActivity.init(ScreenShareActivity.java:170) ~[na:0.0]
at com.focustech.android.studyfun.activity.screenshare.ScreenShareActivity.onActivityResult(ScreenShareActivity.java:144) ~[na:0.0]
at android.app.Activity.dispatchActivityResult(Activity.java:7690) ~[na:0.0]
at android.app.ActivityThread.deliverResults(ActivityThread.java:4928) ~[na:0.0]
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4975) ~[na:0.0]
at android.app.ActivityThread.-wrap20(Unknown Source:0) ~[na:0.0]
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1950) ~[na:0.0]
at android.os.Handler.dispatchMessage(Handler.java:108) ~[na:0.0]
at android.os.Looper.loop(Looper.java:166) ~[na:0.0]
at android.app.ActivityThread.main(ActivityThread.java:7425) ~[na:0.0]
at java.lang.reflect.Method.invoke(Native Method) ~[na:0.0]
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245) ~[na:0.0]
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921) ~[na:0.0]

这个错误是JNI 找不到 Java_org_webrtc_PeerConnectionFactory_nativeInitializeAndroidGlobals 函数

问题定位

今天早上灵光一闪,我把测试打包的 abc.apk 下载下来,修改后缀名为 abc.zip ,然后解压

真相浮现了,我在 \lib\armeabi-v7a\lib\x86\lib\x86_64 里面全都没有找到 libjingle_peerconnection_so.so!!!

后来才知道只是 在 Android Studio(AS) 上面提交 so 库文件的一个坑。

我的 AS 用的是暗色调的主题,所以文件 libjingle_peerconnection_so.so 没有提交到 SVN 上的颜色是暗黄色,而不是正常提交 SVN 显示的白色。

问题解决

最后,我在 AS 里面右击Show In Explorer,然后借助 TortoiseSVN 把文件提交到 SVN 了。然后让测试重新打包

No implementation found for void `org.webrtc.PeerConnectionFactory.initializeAndroidGlobals(android.content.Context, boolean)的更多相关文章

  1. 自定义刻度的SeekBar

    <com.imibaby.client.views.CustomSeekbar android:id="@+id/myCustomSeekBar" android:layou ...

  2. WebRTC之Android客户端

    一.WebRTC的Android客户端搭建 1.libjingle_peerconnection_so.so 2.libjingle_peerconnection.jar 3.客户端源码一份(可以在g ...

  3. Android WebRTC 音视频开发总结

    www.cnblogs.com/lingyunhu/p/3621057.html 前面介绍了WebRTCDemo的基本结构,本节主要介绍WebRTC音视频服务端的处理,,转载请说明出处(博客园RTC. ...

  4. 【我的Android进阶之旅】Android调用JNI出错 java.lang.UnsatisfiedLinkError: No implementation found for的解决方法

    错误描述 今天使用第三方的so库时候,调用JNI方法时出现了错误.报错如下所示: 11-01 16:39:20.979 4669-4669/com.netease.xtc.cloudmusic E/a ...

  5. Android IOS WebRTC 音视频开发总结(十二)-- sufaceview

    谈到音视频不得不谈谈对视频呈现的理解,为了让大家能有一个更好的理解,先看看android里面SurfaceView的原理,后续陆续分享其绘画原理. 说明:本文是转载的,转载自哪里我也不知道,貌似经过很 ...

  6. 集成Glide4.3.1出错!AbstractMethodError: abstract method "void com.bumptech.glide.module

    项目中原本是用的Glide3.7.0,一切功能正常,但是集成了网易云信的UIKIT后,就出问题了,发现是Glide4.0的问题. Glide4.0,始终会报这么一个错,就算是最简单的加载也仍然报错. ...

  7. [虾扯蛋] android界面框架-Window

    从纯sdk及framwork的角度看,android中界面框架相关的类型有:Window,WindowManager,View等.下面就以这几个类为出发点来概览下安卓开发的"界面架构&quo ...

  8. ScrollView中嵌套recycleView 出现的不显示,显示不全,终极解决方案

    最近公司项目中用到了ScrollView去嵌套recycleView, 最开始我天真的把recycleView直接放入scrollView中,结果可想而知,什么都不显示,瞬间懵逼,我心想应该是和嵌套L ...

  9. Android 自动化测试—robotium(九) Junit_report测试报告重定向输出到终端SDCard

    借鉴网上相关资料主要用于无root权限的终端.主要分为以下三步: 一.重写InstrumentationTestRunner类: package com.exmaple.test; import ja ...

随机推荐

  1. Win8.1安装配置64位Oracle Database 11g的详细图文步骤记录

    在开始Oracle数据安装之前建议:1.关闭本机的病毒防火墙.2.断开互联网. 这样可以避免解压缩丢失文件和安装失败. Step1 Oracle官网下载好Windows系统64位的安装包,下载速度慢的 ...

  2. Shader专题:卡通着色(一)控制颜色的艺术

    什么是 Shader? 关于什么是 Shader ,各种百科各种教程都有说过,但是今天我们就从一个另一个角度去试着理解什么是 Shader? 我们先看下 Shade 的英文意思,如下: v.给...遮 ...

  3. LeetCode60. 第k个排列

    解法一:用next_permutation()函数,要求第k个排列,就从"123...n"开始调用 k - 1 次 next_permutation()函数即可. class So ...

  4. Javascript 中 数组遍历 forin和forof 的区别

    定义一个数组 let array = [1, 2, 3, 4]; for (let a in array){ console.log("遍历a的值 "+a+"”,数组中的 ...

  5. How many ways??,题解

    题目: 题意: 找过k条边的路径个数. 分析: 首先注意一下题意,同一个点过两次算两次,做过类似的,过k条边的最短路,只要搞一个矩阵,然后快速幂就好了,这个也一样,维护信息变一下,然后就好了. 如果k ...

  6. Bank Hacking题解

    题目: 题意: 有一颗树,你可以断开点(第一个随便断,以后只能是和已经断开的点相临的点),每个点有权值,断开之后,经一条边和两条边可以到达的节点权值加一,问到最后出现过的最大的权值. 分析: 为啥断开 ...

  7. wcf服务各种情况下应用

    1.控制台调用 第一步,添加wcf服务 2.写接口,记得要加好契约特性. 3.声明一个类继承wcf服务. 4.ipconfig配置 5.控制台运行 6.运行app.config里面,加上调用的接口方法 ...

  8. about 蛤蛤

    蛤蛤属于蛤蛤门(haha),蛤蛤纲(haha),蛤蛤亚纲(haha),蛤蛤目(haha),蛤蛤总科(haha),蛤蛤科(haha).

  9. python三器一闭

    前言:python三器一闭i 包含 迭代器.生成器.装饰器,闭包 迭代器 概念:迭代器是一种可以记录可迭代对象遍历的位置,迭代器从第一个元素开始访问,直到访问所有元素访问结束,迭代器只会往前,不会后退 ...

  10. SpringMVC如何从默认的index.jsp页面跳转到其他页面

    最近学习SpringMVC时,想要做一个登录页面Login.jsp,发现Tomcat服务器默认进入的页面是WEB-INF/index.jsp,查询资料发现如果修改默认页面,还需要修改Tomcat文件目 ...