webrtc 103 android编译问题

1.Build with “use_custom_libcxx=false” args for gn will get error: ld.lld: error: undefined symbol: _Unwind_Backtrace

FAILED: libjingle_peerconnection_so.so libjingle_peerconnection_so.so.TOC lib.unstripped/libjingle_peerconnection_so.so
python3 "../../build/toolchain/gcc_solink_wrapper.py" --readelf="../../third_party/llvm-build/Release+Asserts/bin/llvm-readelf" --nm="../../third_party/llvm-build/Release+Asserts/bin/llvm-nm" --strip=../../third_party/llvm-build/Release+Asserts/bin/llvm-strip  --sofile="./lib.unstripped/libjingle_peerconnection_so.so" --tocfile="./libjingle_peerconnection_so.so.TOC" --output="./libjingle_peerconnection_so.so" -- ../../third_party/llvm-build/Release+Asserts/bin/clang++ -shared -Wl,-soname="libjingle_peerconnection_so.so" -lEGL -Wl,--build-id -fuse-ld=lld -Wl,--fatal-warnings -Wl,--build-id -fPIC -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,-z,max-page-size=4096 -Wl,--color-diagnostics -Wl,--no-rosegment -Wl,--no-call-graph-profile-sort -Wl,--exclude-libs=libvpx_assembly_arm.a --unwindlib=none --target=aarch64-linux-android21 -Wl,-mllvm,-enable-machine-outliner=never -no-canonical-prefixes -Werror -Wl,--gdb-index --sysroot=../../third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot -Wl,--warn-shared-textrel -Wl,-z,defs -Wl,--as-needed -Wl,--version-script=../../build/android/android_only_jni_exports.lst -Wl,--dynamic-linker,/system/bin/linker64 -o "./lib.unstripped/libjingle_peerconnection_so.so" @"./libjingle_peerconnection_so.so.rsp"
ld.lld: error: undefined symbol: _Unwind_Backtrace
>>> referenced by stacktrace.cc:227 (../../sdk/android/native_api/stacktrace/stacktrace.cc:227)

问题解决:
https://bugs.chromium.org/p/webrtc/issues/detail?id=13535

2、absl 相关如果在链接时报类似错误:

Undefined symbols for architecture arm64:
  "webrtc::VideoFrame::Builder::set_update_rect(std::__1::optional<webrtc::VideoFrame::UpdateRect> const&)", referenced from:
      RtcVideoCapturer::OnFrame(webrtc::VideoFrame const&) in RtcVideoCapturer.o

但是 libwebrtc 用的是 absl::optional,在应用程序中使用的是 std::optional,需保持一致。

将 webrtc-checkout/src/third_party/abseil-cpp/absl/base/options.h 中 ABSL_OPTION_USE_STD_ANY 、ABSL_OPTION_USE_STD_OPTIONAL ABSL_OPTION_USE_STD_STRING_VIEW 和 ABSL_OPTION_USE_STD_VARIANT 四个宏的值改为从 2 改为 0 再重新编译 webrtc

问题解决:
https://blog.tubumu.com/2022/03/11/mediasoup-02/

mediasoup 适配新webrtc

webrtc_88 % cp ./rtc_base/constructor_magic.h rtc_base/atomic_ops.h /Users/Downloads/mediasoup-client-android/mediasoup-client/deps/webrtc/src/rtc_base/
webrtc_88 % cp ./sdk/android/src/jni/class_reference_holder.h /Users/Downloads/mediasoup-client-android/mediasoup-client/deps/webrtc/src/sdk/android/src/jni/

https://juejin.cn/post/7221454955265556540

编译libwebrtc.a 和 libwebrtc.jar

默认不会编译 webrtc 模块,我们需要在/tools_webrtc/android/build_aar.py 文件中加入 ‘:webrtc’

TARGETS = [
    ':webrtc',
    'sdk/android:libwebrtc',
    'sdk/android:libjingle_peerconnection_so',
]

./tools_webrtc/android/build_aar.py --extra-gn-args 'is_debug=false is_component_build=false is_clang=true treat_warnings_as_errors=false' --build-dir ./out/release-build/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值