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.
Dzięki phuongle .. to działa! – Dev