2015-02-10 13 views

Odpowiedz

7

Masz szczęście. Właśnie ukończyłem integrację Webrtc w moim projekcie na kilka dni. Moje rozwiązanie jak poniżej:

  1. Połączyć wszystkie * .a zbudowaliście dla ARMv7 do libWebRTC-armv7.a: Korzystanie z linii poleceń jak poniżej

    libtool -static -o src/out_ios_armv7/release-iPhoneOS/libWebRTC-temp.a src/out_ios_armv7/o uwalnianiu iPhoneOS/* a.

    pasek S X -o src/out_ios_armv7/uwalniania iPhoneOS/libWebRTC-armv7.a -r src/out_ios_armv7/o uwalnianiu iPhoneOS/libWebRTC-temp.a

  2. Połączyć wszystkie * .a, które zbudowałeś dla arm64 do libWebRTC-arm64.a:

    libtool -static -o src/out_ios/uwalniania iPhoneOS/libWebRTC-temp.a src/out_ios/o uwalnianiu iPhoneOS/* a.

    pasek S X -o src/out_ios/Release- iPhoneOS/libWebRTC-arm64.a -r src/out_ios/release-iPhoneOS/libWebRTC-temp.a

  3. stworzyć swój libWebRTC wspierane zarówno ARMv7 i arm64:

    lipo -create src/out_ios_armv7/release-iPhoneOS/libbWebRTC-armv7.a src/out_ios/Release-iphoneos/libWebRTC-arm64.a -output libWebRTC.a

Ps: Wystarczy zbudować ARMv7 bibliotekę oddzielone folderze z 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

Dzięki phuongle .. to działa! – Dev

0

Można odwołać się do naszego bloga:

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

ja napisałem skrypt do budowania źródła WebRTC do frameworku (z wyłączeniem biblioteki sygnalizacyjnej apprtc) do użytku w systemie iOS.

Jeśli nie możesz przeczytać chińskiego, po prostu przeczytaj ten skrypt osadzony na tym blogu, to wystarczy! Aha.

./build_webrtc.sh build_all 

Może występować błąd w urządzeniu armv7. ten błąd został spowodowany przez problem z przepełnieniem stosu w dekodowaniu VP8 w funkcji neonowania armv7.

można potwierdzić tę poprawkę do poprawki katastrofie na to:

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, 

Życzenie to może Ci pomóc!

Studenci diveinedu.com właśnie przezwyciężyli i naprawili ten błąd.

+0

Podążyłem za twoim tutorialem, ale kiedy skrypt działa na łączeniu bibliotek armv7 i arm64, pojawia się tam i błąd, że obie biblioteki nie mogą mieć tej samej struktury. Próbowałem także uruchomić kompilację arm64 na iPhone 6 i iPad 3, błąd, który otrzymałem, jest nieprawidłowej architektury. –

0

dzięki phuongle, to naprawdę działa ...

... ale z niespodzianką ...

...jak zauważył Omer Waqas Khan, może być przypadek, w którym jeden może napotkać komunikat o błędzie (podczas lipo-inging): obie biblioteki nie mogą być tej samej struktury.

Oczywiście poszłam WTF ... lipo, co się z tobą dzieje ... są różnej konstrukcji ... Zbudowałem je w ten sposób ...

Ale potem wyruszyłem do podwójnego sprawdzenia to:
- poszedłem w folderze, w którym miałem arm64_merged lib i ...

lipo -info lib's_name.a 

Poinformowano powrotem bycia zarówno typu ARMv7 i arm64. Zdziwienie, ja wtedy ...

lipo -info *.a 

... wszystkie biblioteki (72 z nich) zgłaszane są typu arm64 wyjątkiem 2 ...

libisac_fix.a 
libisac_neon.a 

Z jakiegoś powodu były ARMv7. Wcześniej używałem klona "we kilka dni". Wtedy pamiętam, że zawsze otrzymywałem tylko 70 bibliotek. Ale potem, z innych powodów, postanowiłem

gclient sync 

Po tym, skończyło się z 72 ... jako takie, po prostu usunął nonsens libisac. Teraz 2 fat_libs były różnych typów i mogłem z powodzeniem lipo.