首页 > 其他分享 >Android WebRTC 编译注意事项

Android WebRTC 编译注意事项

时间:2023-10-13 12:12:25浏览次数:40  
标签:C++ WebRTC 编译 libunwind 注意事项 Android 链接

Android WebRTC 编译注意事项

说明

  • 文主要适用于需要从外部C++文件调用WebRTC C++接口的场景
  • 本文对应的源码基于m111分支,高版本的也可以参考

Android平台用默认参数编译Android WebRTC存在的主要问题

  • RTTI 默认未开启
  • C++库默认使用了webrtc内部的C++库,与外部C++库abi不兼容,由于符号不同可能会链接失败,侥幸编译通过,也会在运行时由于内存布局不一致,引发崩溃
  • 默认只暴露JNI的符号,其他符号都引用不到

解决方案

RTTI开启

在编译参数加上

use_rtti=true

使用通用的C++库

在编译参数加上

use_custom_libcxx = false

加上这个参数后发现一些_Undiwnd_开头的链接失败了。 原因是WebRTC脚本里面存在bug:
在src/build/config/Android/BUILD.gn中,无差别的关闭了libunwind的链接:
image
而关闭这个的原因是使用webrtc定制的libc++的时候,链接了webrtc内部的libunwind:
image
而关闭use_custom_libcxx后,--unwindlib=none这个链接选项依然work,然而并没有去link libunwind这个库。解决方案:

  • 在buildtools/third_party/libunwind中,修改BUILD.gn,将Libunwind可见性暴露给libjingle_peerconnection_so.so:
    image
  • 链接libjingle_peerconnection_so.so链接libunwind.a
    image

暴露C++符号

  • 将默认visibility改成default
    image
  • 修改android so导出配置文件
    image

image

标签:C++,WebRTC,编译,libunwind,注意事项,Android,链接
From: https://www.cnblogs.com/bruce-zheng/p/17761793.html

相关文章

  • Android开发 Jetpack_Compose_7 文字
    前言此篇博客主要讲解Compose里的文字相关的UI功能。文本处理相关的内容与细节较多,此篇博客尽量涵盖完整,所以博客较长需要耐心看完。  官网文档:https://developer.android.google.cn/jetpack/compose/text?hl=zh-cnText文本全部参数这里列出全部参数,下面会一个一个举......
  • ConfigureAwait(false) 原理以及注意事项总结
    解决什么问题?1、避免线程死锁2、可能的性能提升存在的问题:1、当代码在另一个线程上继续时,线程同步上下文将丢失,因为状态机改变。这里最大的损失是你会失去归属于线程的Culture和Language,其中包含了国家语言时区信息,以及来自原始线程的HttpContext.Current之类的信息。因此,如......
  • Android sdkmanager not found. Update to the latest Android SDK and ensure that t
     (base)cloud@Robotbin%flutterdoctor--android-licensesAndroidsdkmanagernotfound.UpdatetothelatestAndroidSDKandensurethatthecmdline-toolsareinstalledtoresolvethis.     ......
  • Oracle数据库迁移注意事项
    本文基于使用数据泵(datapump)迁移数据库时,特别需要注意的几点。1.sys下别其他用户调用的package,procedure等-场景:大型数据库中,都会有自定义的表分区管理procedure2.tnsnames.ora、listener.ora、sqlnet.ora的信息-场景:有些场景可能会使用oraclewallet,因......
  • Android 外置存储卡无法使用FileProvider问题
    解决办法:<?xmlversion="1.0"encoding="utf-8"?><paths><external-files-pathname="my_images"path="."/></paths>修改为<?xmlversion="1.0"encoding="utf-8&......
  • 实时美妆魅力尽显:探索相芯轻美妆SDK功能及集成方法(Android)
    随着人工智能技术的不断发展,相芯SDK的轻美妆功能为用户带来了一种全新的美妆体验。轻美妆是妆容和美妆的结合,使用比较轻薄的妆效使轻美妆效果更佳。这一功能集成了多项先进技术,通过人脸识别、图像处理和分割等技术,实现了实时美妆效果的展示和应用。本文将深入介绍相芯SDK轻美妆功能......
  • Android 通过bin二进制程序调用jar原理
    最近在研究monkey测试,发现monkey测试的代码都是JAVA编写的,通过编译生成jar包,而我们在执行测试时直接执行/system/bin/monkey这个二进制程序的,那么它是如何能调起java程序的呢?先来看看monkey二进程程序的生成.development\cmds\monkey\Android.mkLOCAL_PATH:=$(callmy-dir)i......
  • Android 设置任意View的背景为圆形或圆角
    原文地址:Android设置任意View的背景为圆形或圆角-Stars-One的杂货小窝我的需求主要还是在SurfaceView需要设置为圆形背景,在网上找了下,发现一个可行方法,做个记录importandroid.graphics.Outline;importandroid.graphics.Rect;importandroid.view.View;importandr......
  • 安装 Android x86 并开启 arm 兼容
    安装Androidx86并开启arm兼容尝试了各种安卓模拟器,要么不能设置代理(BlueStacks),要么/system目录没办法设置。获取Androidx86这里使用的是Android7版本,在本次操作时houdini对Android8/Android9的版本支持有限。从Android-x86旧版本获取7.1的Android-x86_......
  • 金九银十Android面试该怎么有效的回答,看完这篇文章就懂了
    今年的严寒使得许多职场人的求职时间变长,以往火热的金三银四不再,金九银十九承载着广大程序员的希望。但是在这个特殊情况下,竞争压力也会增大,各大企业对于求职者的要求也随之增高。很多小伙伴都面临着这样的情况:千辛万苦拿到面试机会,却因各种原因翻车。“在面试的时候不能将自己的真......