Wie kann ich die WebRTC-Bibliothek, die für beide armv7 & Arm64 in iOS unterstützt?iOS WebRTC-Bibliothek unterstützt sowohl Armv7 & Arm64
Antwort
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:
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
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
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
Sie in unserem Blog verweisen:
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.
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. –
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.
- 1. iOS App Erfordert Arm64?
- 2. CocoaPods arm64 Ausgabe
- 3. Erstellen von ffmpeg iOS-Bibliotheken für armv7, armv7s, arm64, i386 und universal
- 4. ipa archive build für armv7, armv7s und arm64 kann nicht auf iOS 5.1.1-Geräten installiert werden
- 5. Appcelerator Drittanbieter-Framework arm64 Fehler
- 6. Probleme beim Erstellen einer C++ - Shared Library für mehrere Architekturen (x86_64, armv7, armv7s, arm64, i386)
- 7. iOS - 2 doppelte Symbole für Architektur armv7
- 8. Warnung: Alle Apps sollten eine armv7-Architektur enthalten (aktuelle archs = "arm64")
- 9. Urban Airship Integration Fehler arm64, die nicht die Architektur ist verknüpft (armv7)
- 10. Xcode Swift-Datei wurde für Arm64 gebaut, die nicht die Architektur ist verknüpft (Armv7)
- 11. Wie gibt man Unterstützung von Arm64 Bit in iOS-Projekt
- 12. ARMv6 und ARMv7
- 13. Ist arm64-v8a kompatibel mit armeabi-v7a?
- 14. Unterstützt iOS WebView HSTS?
- 15. Unterstützt c-ars IOS?
- 16. iOS, ld: Framework nicht gefunden GoogleMaps für Architektur arm64
- 17. iOS Wikitude SDK Build-Fehler "Undefined Symbole für Architektur arm64"
- 18. "_CMTimeGetSeconds", Symbol (e) nicht für Architektur ARMv7 gefunden -IOS
- 19. So kompilieren Sie VAMP-Plugins zu iOS ARMV7
- 20. Google Conversion Tracking für iOS Linker Fehler für Architektur armv7
- 21. Verwenden von OpenCV in Xamarin.iOS (Arm64)
- 22. Gradle exclude arm64 libs
- 23. Kann ich den app store nur mit armv6 code (nicht armv7) für eine App, die iOS 4.2+ unterstützt, einreichen?
- 24. Unterstützt Armv6 und iOS 6 in einer App Store App?
- 25. unterstützt Xamarin CoreBluetooth für iOS?
- 26. Unterstützt iOS die TLS-Komprimierung?
- 27. Apache Cordova unterstützt iOS-Version
- 28. Unterstützt iOS Dateioperationen über SMB?
- 29. Fehler ITMS-90092: "Dieses Bündel ist ungültig. Apps, die eine arm64-Architektur enthalten, müssen eine armv7-Architektur enthalten. "
- 30. Unterstützt sowohl FD-Nummer und Dateinamen parametrisierte Umleitungen
Danke phuongle .. es funktioniert! – Dev