2015-02-10 22 views

Trả lời

7

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:

  1. 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

  2. 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

  3. 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 
+0

Cảm ơn phuongle .. nó hoạt động! – Dev

0

Bạn có thể tham khảo blog của chúng tôi:

http://io.diveinedu.com/2015/02/02/%E7%AC%AC%E4%BA%94%E7%AB%A0-WebRTC%E7%9A%84iOS%E6%A1%86%E6%9E%B6%E7%BC%96%E8%AF%91.html

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.

+0

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ệ. –

0

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.

Các vấn đề liên quan