Làm cách nào để nhận thư viện webRTC hỗ trợ cả armv7 & arm64 trong iOS?Thư viện webRTC iOS hỗ trợ cả armv7 & arm64
Trả lời
Bạn may mắn. Tôi vừa hoàn thành tích hợp webrtc trong dự án của mình trong vài ngày. Giải pháp của tôi như sau:
Kết hợp tất cả * .a bạn xây dựng cho ARMv7 để libWebRTC-armv7.a: Sử dụng dòng lệnh như sau
libtool -static -o src/out_ios_armv7/Thả-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
Kết hợp tất cả *. bạn đã tạo cho arm64 vào libWebRTC-arm64.a:
libtool -static -o src/out_ios/Release-iphoneos/libWebRTC-temp.a src/out_ios/Release-iphoneos/*. Một
dải -S -x -o src/out_ios/Release- iphoneos/libWebRTC-arm64.a -r src/out_ios/Release-iphoneos/libWebRTC-temp.a
Tạo libWebRTC của bạn hỗ trợ cả ARMv7 và arm64:
lipo -tạo src/out_ios_armv7/Release-iphoneos /libWebRTC-armv7.a src/out_ios/Release-iphoneos/libWebRTC-arm64.a -output libWebRTC.a
Ps: Chỉ cần xây dựng thư viện ARMv7 của bạn vào thư mục tách với arm64:
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
Bạn có thể tham khảo blog của chúng tôi:
Tôi đã viết một kịch bản để xây dựng nguồn WebRT vào một khung công tác (không bao gồm thư viện báo hiệu apprtc) để sử dụng iOS.
Nếu bạn không thể đọc tiếng Trung, bạn chỉ cần đọc tập lệnh được nhúng trong blog đó, đủ rồi! aha.
./build_webrtc.sh build_all
Có thể có lỗi trong thiết bị armv7. lỗi đó đã được gây ra bởi một vấn đề ngăn xếp trên luồng trong giải mã VP8 trong chức năng neon armv7.
Bạn có thể xác nhận bản vá này để sửa lỗi crash cho nó:
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,
Wish này có thể giúp bạn!
Các sinh viên của diveinedu.com vừa khắc phục và khắc phục lỗi này.
Tôi đã làm theo hướng dẫn của bạn, nhưng khi kịch bản hoạt động trên việc kết hợp các thư viện armv7 và arm64, ở đó và lỗi xuất hiện cả hai libs không thể có cùng cấu trúc. Ngoài ra tôi đã thử chạy arm64 xây dựng trên iPhone 6 và iPad 3, lỗi tôi nhận được là kiến trúc không hợp lệ. –
nhờ phuongle, điều này thực sự hoạt động ...
... nhưng với một twist ...
...như Omer Waqas Khan nhận thấy, có thể có trường hợp người ta có thể gặp thông báo lỗi (trong khi lipo-ing): cả hai libs không được có cùng cấu trúc.
Tất nhiên, tôi đã đi WTF ... lipo, có chuyện gì xảy ra với cậu ... họ là những cấu trúc khác nhau ... Tôi xây dựng chúng theo cách đó ...
Nhưng sau đó tôi đặt ra để kiểm tra lại nó:
- tôi đã đi trong thư mục mà tôi đã có lib arm64_merged và ...
lipo -info lib's_name.a
nó báo cáo lại trở của cả hai ARMv7 và arm64 loại. Bối rối, tôi sau đó ...
lipo -info *.a
... tất cả các thư viện (72 trong số đó) báo cáo là loại arm64 trừ 2 ...
libisac_fix.a
libisac_neon.a
Đối với bất cứ lý do họ ARMv7. Trước đó trong ngày, tôi đã sử dụng một bản sao "một vài ngày tuổi" của thingy webrtc. Lúc đó, tôi nhớ luôn chỉ có 70 thư viện. Nhưng sau đó, vì các lý do khác, tôi quyết định
gclient sync
Sau đó, tôi đã kết thúc với 72 ... như vậy, tôi vừa xóa bỏ những điều vô nghĩa libisac. Bây giờ 2 fat_lib là các loại khác nhau và tôi có thể thành công lipo.
- 1. Xây dựng ffmpeg thư viện iOS cho armv7, armv7s, arm64, i386 và phổ
- 2. Trình duyệt hỗ trợ webRTC dành cho iOS?
- 3. WebKit trong iOS 11 (Beta) có hỗ trợ WebRTC không?
- 4. Swift có hỗ trợ WebRTC không?
- 5. getChildFragmentManager() và hỗ trợ thư viện
- 6. Renderscript qua thư viện hỗ trợ
- 7. Thư viện hỗ trợ Android là gì?
- 8. BetterPickers không có thư viện hỗ trợ
- 9. IllegalStateException - Hỗ trợ Fragment thư viện
- 10. Cách thêm thư viện hỗ trợ?
- 11. GoogleSignIn iOS framework không hỗ trợ Bitcode
- 12. : tất cả các ứng dụng phải bao gồm kiến trúc armv7 (current archs = "arm64")
- 13. build gradle Android và các thư viện hỗ trợ
- 14. Hỗ trợ thư viện cho đặc điểm NotNull của Scala
- 15. NoClassDefFoundError với Thư viện hỗ trợ Android và Maven
- 16. Thư viện hỗ trợ: Hoạt ảnh FragmentTransaction không hoạt động
- 17. Thư viện hỗ trợ Android nào được phát hành theo?
- 18. Thư viện hỗ trợ Android hoạt động như thế nào?
- 19. Lỗi Opencv: không hỗ trợ GPU (thư viện được biên dịch không hỗ trợ CUDA)
- 20. Thêm thư viện hỗ trợ vào dự án Android
- 21. Thư viện hỗ trợ Android 27, Cập nhật phân đoạn?
- 22. Hỗ trợ WebRTC trên Trình duyệt Chrome trong iphone/ipad
- 23. Sử dụng thư viện hỗ trợ trong các dự án và thư viện android (Android Studio)
- 24. Cài đặt ffmpeg thư viện ios armv7, armv7s, i386 và phổ trên Mac với 10.8
- 25. lỗi sau khi cập nhật thư viện hỗ trợ
- 26. URL thư viện phân tích với sự hỗ trợ IDN
- 27. Thư viện CSS (ví dụ: Bootstrap) hỗ trợ IE6?
- 28. Hỗ trợ thư viện Máy Vector cho C#
- 29. Chọn Sherlock Actionbar trên Thư viện Hỗ trợ
- 30. Android Studio - hiển thị vấn đề thư viện hỗ trợ
Cảm ơn phuongle .. nó hoạt động! – Dev