2015-02-10 15 views

Antwort

7

Sie haben Glück. Ich bin gerade fertig geworden, um webrtc für ein paar Tage in mein Projekt zu integrieren. Meine Lösung wie folgt:

  1. alle Kombinieren * .a Sie für ARMv7 zu libWebRTC-armv7.a gebaut: Verwenden von Befehlszeilen wie unten

    libtool -static -o src/out_ios_armv7/Release iphoneos/libWebRTC-temp.a src/out_ios_armv7/Freigabe-iphoneos/*. a

    Streifen -S -x -o src/out_ios_armv7/Freigabe-iphoneos/libWebRTC-armv7.a -r src/out_ios_armv7/Freigabe-iphoneos/libWebRTC-temp.a

  2. Kombinieren Sie alle * .a, die Sie für arm64 erstellt haben, mit libWebRTC-arm64.a:

    libtool -static -o src/out_ios/Freigabe-iphoneos/libWebRTC-temp.a src/out_ios/Freigabe-iphoneos/*. A

    Streifen -S -X -O src/out_ios/Release- iphoneos/libWebRTC-arm64.a -r src/out_ios/Veröffentlichung-iphoneos/libWebRTC-temp.a

  3. erstellen Sie Ihre libWebRTC unterstützt sowohl ARMv7 und arm64:

    Lipo -create src/out_ios_armv7/Veröffentlichung-iphoneos /libWebRTC-armv7.a src/out_ios/Freigabe-iphoneos/libWebRTC-arm64.a-Ausgang libWebRTC.a

Ps: Sie Ihre ARMv7 Bibliothek getrennt Ordner mit arm64 bauen:

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

Danke phuongle .. es funktioniert! – Dev

0

Sie in unserem Blog verweisen:

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

Ich habe ein Shell-Skript geschrieben WebRTC Quellen zu bauen in ein Framework (mit Ausnahme der apprtc-Signalisierungsbibliothek) für iOS.

Wenn Sie nicht Chinesisch lesen können, lesen Sie einfach das in diesem Blog eingebettete Skript, es reicht! Aha.

./build_webrtc.sh build_all 

Es kann einen Fehler in armv7 Gerät geben. Dieser Bug wurde durch ein Stack-over-Flow-Problem bei der VP8-Decodierung in der Armv7-Neon-Funktion verursacht.

Sie können diesen Patch behebt Absturz für ihn bestätigen:

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, 

wünschen diese Ihnen helfen können!

Die Schüler von diveinedu.com haben diesen Fehler gerade überwunden und behoben.

+0

Ich habe Ihr Tutorial verfolgt, aber wenn das Skript die Bibliotheken armv7 und arm64 kombiniert, wird der Fehler angezeigt, dass beide Bibliotheken nicht dieselbe Struktur haben können. Auch ich habe versucht, die arm64 Build auf iPhone 6 und iPad 3 laufen, der Fehler, den ich erhalte, ist von ungültiger Architektur. –

0

dank phuongle, das funktioniert wirklich ...

... aber mit einem Twist ...

...wie Omer Waqas Khan bemerkte, könnte es einen Fall geben, wo die Fehlermeldung (während lipo-ing) auftreten könnte: beide Bibliotheken können nicht von derselben Struktur sein.

Natürlich ging ich WTF ... Lipo, was mit dir los ist ... sie sind von unterschiedlicher Struktur ... Ich baute sie auf diese Weise ...

Aber dann stellte ich zu überprüfen out es:
- ich im Ordner ging, wo ich die arm64_merged lib hatte und ...

lipo -info lib's_name.a 

es wird berichtet Rückseite Art sowohl ARMv7 und arm64 zu sein. Verwirrt ich dann ...

lipo -info *.a 

... alle Bibliotheken (72 von ihnen) berichtet, mit Ausnahme von 2 vom Typ arm64 sein ...

libisac_fix.a 
libisac_neon.a 

gleich aus welchem ​​Grund sie ARMv7 waren. Früher am Tag benutzte ich einen "ein paar Tage alten" Klon des webrtc-Dings. Damals habe ich immer nur 70 Bibliotheken bekommen. Aber dann aus anderen Gründen habe ich beschlossen, zu

gclient sync 

Danach habe ich endete mit 72 bis ... als solche, ich habe gerade die libisac Unsinn entfernt. Jetzt waren die 2 Fat_Libs von verschiedenen Arten und ich konnte erfolgreich lipo.

Verwandte Themen