2015-02-10 7 views

ответ

7

Вам повезло. Я только что закончил интегрировать webrtc в свой проект на пару дней. Мое решение, как показано ниже:

  1. Объединить все * .а вы построили для ARMv7 на libWebRTC-armv7.a: Использование командной строки, как показано ниже

    Libtool -static -o SRC/out_ios_armv7/Release-iphoneos/libWebRTC-temp.a SRC/out_ios_armv7/Release-iphoneos/*.

    полосы -S -x -o SRC/out_ios_armv7/Выпуск-iphoneos/libWebRTC-armv7.a -r SRC/out_ios_armv7/Release-iphoneos/libWebRTC-temp.a

  2. Объединить все * .a вы построили для arm64 в libWebRTC-arm64.a:

    Libtool -static -o SRC/out_ios/Выпуск-iphoneos/libWebRTC-temp.a SRC/out_ios/Release-iphoneos/*.

    полосы -S -x -o SRC/out_ios/Release- iphoneos/libWebRTC-arm64.a -r SRC/out_ios/Release-iphoneos/libWebRTC-temp.a

  3. Создать ваш libWebRTC поддерживаются оба ARMv7 и arm64:

    липо -create SRC/out_ios_armv7/Релизы-iphoneos /libWebRTC-armv7.a src/out_ios/Release-iphoneos/libWebRTC-arm64.a -output libWebRTC.a

Ps: Просто построить свою ARMv7 библиотеку отделенной папку с 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

Спасибо phuongle .. он работает! – Dev

0

Вы можете найти на нашем блоге:

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

Я написал скрипт для создания источников WebRTC к инфраструктуре (исключая библиотеку сигнализации apprtc) для использования iOS.

Если вы не можете читать по-китайски, вы просто прочитали этот сценарий, встроенный в этот блог, этого достаточно! Ага.

./build_webrtc.sh build_all 

Может быть ошибка в устройстве armv7. эта ошибка была вызвана проблемой стека над потоком в декодировании VP8 в функции armv7 neon.

Вы можете подтвердить этот патч фиксирует аварии для него:

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 только что преодолели и исправили эту ошибку.

+0

Я следил за вашим учебным пособием, но когда скрипт работает над объединением библиотек armv7 и arm64, возникает ошибка, и обе библиотеки не могут иметь одинаковую структуру. Также я попытался запустить arm64 на iPhone 6 и iPad 3, ошибка, которую я получаю, имеет недопустимую архитектуру. –

0

благодаря phuongle, это действительно работает ...

... но с изюминкой ...

...как заметил Омер Вакас Хан, может быть случай, когда можно встретить сообщение об ошибке (в то время как липо-ин): обе библиотеки не могут иметь одинаковую структуру.

Конечно, я пошел 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 были разных типов, и я мог успешно липо.