[英]Worklight 6.0.0.1 iOS Native Library only for ARMv7 and not for ARMv7s and ARM64?
[英]iOS webRTC library supporting both armv7 & arm64
如何获得支持iOS中armv7和arm64的webRTC库?
你很幸运。 我刚刚完成将webrtc集成到我的项目中几天。 我的解决方案如下:
将为armv7构建的所有* .a组合到libWebRTC-armv7.a:使用如下命令行
libtool -static -o src / out_ios_armv7 / Release-iphoneos / libWebRTC-temp.a src / out_ios_armv7 / Release-iphoneos / * .a
strip -S -x -o src / out_ios_armv7 / Release-iphoneos / libWebRTC-armv7.a -r src / out_ios_armv7 / Release-iphoneos / libWebRTC-temp.a
将为arm64构建的所有* .a组合到libWebRTC-arm64.a:
libtool -static -o src / out_ios / Release-iphoneos / libWebRTC-temp.a src / out_ios / Release-iphoneos / * .a
strip -S -x -o src / out_ios / Release-iphoneos / libWebRTC-arm64.a -r src / out_ios / Release-iphoneos / libWebRTC-temp.a
创建libWebRTC支持armv7和arm64:
lipo -create src / out_ios_armv7 / Release-iphoneos / libWebRTC-armv7.a src / out_ios / Release-iphoneos / libWebRTC-arm64.a -output libWebRTC.a
Ps:使用arm64将armv7库构建到分离的文件夹:
export GYP_GENERATORS="ninja"
export GYP_DEFINES="build_with_libjingle=1 build_with_chromium=0 libjingle_objc=1 OS=ios target_arch=armv7"
export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_ios_armv7"
export GYP_CROSSCOMPILE=1
pushd src
gclient runhooks
ninja -C out_ios_armv7/Release-iphoneos AppRTCDemo
popd
你可以参考我们的博客:
我编写了一个shell脚本来构建WebRTC源到一个框架(不包括apprtc信令库)供iOS使用。
如果你不懂中文,你只需阅读该博客中嵌入的脚本,就足够了! 啊哈。
./build_webrtc.sh build_all
armv7设备可能存在错误。 该错误是由armv7 neon函数中的VP8解码中的堆栈溢出问题引起的。
您可以确认此修补程序以修复崩溃:
diff --git a/source/libvpx/vp8/common/arm/neon/vp8_subpixelvariance_neon.c b/source/libvpx/vp8/common/arm/neon/vp8_subpixelvariance_neon.c
index 8308d55..a66b6f5 100644
--- a/source/libvpx/vp8/common/arm/neon/vp8_subpixelvariance_neon.c
+++ b/source/libvpx/vp8/common/arm/neon/vp8_subpixelvariance_neon.c
@@ -1003,7 +1003,7 @@ unsigned int vp8_sub_pixel_variance8x8_neon(
const unsigned char *dst,
int dst_stride,
unsigned int *sse) {
- DECLARE_ALIGNED_ARRAY(kAlign16, uint8_t, temp2, kHeight8 * kWidth8);
+ DECLARE_ALIGNED_ARRAY(kAlign16, uint8_t, temp2, kHeight8PlusOne * kWidth8);
DECLARE_ALIGNED_ARRAY(kAlign16, uint8_t, fdata3, kHeight8PlusOne * kWidth8);
if (xoffset == 0) {
var_filter_block2d_bil_w8(src, temp2, src_stride, kWidth8, kHeight8,
希望这可以帮到你!
diveinedu.com的学生刚刚克服并修复了这个错误。
谢谢phuongle,这真的有用......
......但是扭曲......
......正如Omer Waqas Khan所注意到的那样,可能会出现一个人可能会遇到错误信息的情况(同时出现问题): 两个lib都不能具有相同的结构 。
当然,我去了WTF ......胖子,你怎么了......他们的结构不同......我建议他们这样做......
但后来我开始仔细检查它:
- 我进入了arm64_merged lib的文件夹...
lipo -info lib's_name.a
它报告了armv7和arm64类型。 困惑,我接着......
lipo -info *.a
...所有的库(其中72个)报告的类型为arm64,除了2 ...
libisac_fix.a
libisac_neon.a
无论出于何种原因,他们都是armv7。 当天早些时候,我正在使用webrtc thingy的“几天之久”克隆。 那时候,我记得总是只获得70个图书馆。 但是,由于其他原因,我决定
gclient sync
在那之后,我结束了72 ...因此,我刚刚删除了libisac废话。 现在2个fat_libs是不同类型的,我可以成功地脂肪。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.