Jak mogę uzyskać bibliotekę webRTC, która będzie obsługiwać zarówno armv7 & arm64 w systemie iOS?Biblioteka iR webRTC wspierająca zarówno armv7, jak i arm64
Odpowiedz
Masz szczęście. Właśnie ukończyłem integrację Webrtc w moim projekcie na kilka dni. Moje rozwiązanie jak poniżej:
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
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
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
Można odwołać się do naszego bloga:
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.
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. –
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.
- 1. Parsowanie i modyfikowanie kodu LLVM IR
- 2. WeChat SDK na arm64
- 3. ERROR ITMS-90092: "Ten pakiet jest nieprawidłowy. Aplikacje zawierające architekturę arm64 muszą zawierać architekturę "armv7". "
- 4. Gradle wyklucza arm64 libs
- 5. wspieranie zarówno CommonJS i AMD
- 6. Nie można zbudować modułu Darwin - kwestie arm64
- 7. jak działa webRTC?
- 8. Jak działa WebRTC?
- 9. Debugowanie LLVM IR
- 10. Jak opracować aplikację WebRTC dla początkujących?
- 11. Dump IR po każdej optymalizacji LLVM (każdy towarzysza), obie przełęcze LLVM IR i backend debugowania
- 12. Jak skompilować bibliotekę statyczną (gruby) dla armv6, armv7 i i386
- 13. Jak obsługiwać zarówno HTML4, jak i HTML5?
- 14. Zrozumienie najprostszy llvm IR
- 15. Jak testować aplikację mobilną webrtc?
- 16. Jak przekonwertować llvm IR na kod c?
- 17. Obciążenie WebRTC
- 18. Jak emitować LLVM-IR z Cargo
- 19. Jak zrobić clang kompilacji do llvm IR
- 20. eclipse link i log4j: jak używać zarówno
- 21. Zaplanuj przyszłość zarówno sukcesu, jak i niepowodzenia
- 22. Jak ćwierkać zarówno URL i hashtagami
- 23. Wspólna biblioteka Xamarin i PCL
- 24. Dokumentacja kodu LLVM IR opcode
- 25. WebRTC i Websockets. Czy istnieje różnica
- 26. Korzystanie zarówno Thymeleaf i JSP
- 27. Dostęp do członków struct i tablice kodowanym z LLVM IR
- 28. WebRTC: użycie getStats()
- 29. Tworzenie odbiornika WebRTC
- 30. umożliwić użytkownikom app WebRTC ściągnąć WebRTC logów poprzez javascript
Dzięki phuongle .. to działa! – Dev