Come posso ottenere la libreria webRTC che supporterà sia armv7 & arm64 in iOS?Libreria webRTC iOS che supporta armv7 e arm64
risposta
Sei fortunato. Ho appena finito di integrare webrtc nel mio progetto per un paio di giorni. La mia soluzione come di seguito:
Combinare tutto * .a hai costruito per ARMv7 a libWebRTC-armv7.a: Usando righe di comando come di seguito
libtool -static -o src/out_ios_armv7/release-iPhoneOS/libWebRTC-temp.a src/out_ios_armv7/Stampa-iPhoneOS/*. un
striscia -S -x -o src/out_ios_armv7/uscita-iPhoneOS/libWebRTC-armv7.a -r src/out_ios_armv7/Stampa-iPhoneOS/libWebRTC-temp.a
Combina tutti i * .a creati per arm64 a libWebRTC-arm64.a:
libtool -static -o src/out_ios/uscita-iPhoneOS/libWebRTC-temp.a src/out_ios/Stampa-iPhoneOS/*. Un
striscia -S -x -o src/out_ios/Release- iPhoneOS/libWebRTC-arm64.a -r src/out_ios/Stampa-iPhoneOS/libWebRTC-temp.a
Crea il tuo libWebRTC supportati sia ARMv7 e arm64:
lipo -create src/out_ios_armv7/Stampa-iPhoneOS /libWebRTC-armv7.a src/out_ios/Release-iphoneos/libWebRTC-arm64.a -output libWebRTC.a
Ps: Basta costruire la vostra libreria ARMv7 nella cartella separata con 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
È possibile fare riferimento al nostro blog:
ho scritto uno script di shell per costruire fonti WebRTC a un framework (esclusa la libreria di segnalazione apprtc) per l'utilizzo su iOS.
Se non si legge il cinese, basta leggere lo script incorporato in quel blog, è sufficiente! aha.
./build_webrtc.sh build_all
Potrebbe essersi verificato un errore nel dispositivo armv7. quel bug era causato da un problema di stack overflow nella decodifica VP8 nella funzione armv7 neon.
È possibile confermare questa patch di crash correzioni per esso:
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,
dei desideri questo ti può aiutare!
Gli studenti di diveinedu.com hanno appena superato e corretto questo errore.
Ho seguito il tuo tutorial, ma quando lo script funziona combinando le librerie armv7 e arm64, lì ed errore emerge che entrambe le librerie non possono avere la stessa struttura. Inoltre, ho provato a eseguire la build arm64 su iPhone 6 e iPad 3, l'errore che ricevo è di architettura non valida. –
grazie phuongle, questo funziona davvero ...
... ma con un tocco ...
...come notato da Omer Waqas Khan, potrebbe esserci un caso in cui si potrebbe incontrare il messaggio di errore (mentre lipoing): entrambe le librerie non possono essere della stessa struttura.
Naturalmente, sono andato WTF ... lipo, cosa c'è di sbagliato con te ... sono di struttura diversa ... Ho costruito in quel modo ...
Ma poi ho deciso di doppio controllo iT:
- sono andato nella cartella in cui ho avuto la lib arm64_merged e ...
lipo -info lib's_name.a
e 'riferito di essere sia di tipo ARMv7 e arm64. Perplesso, ho poi ...
lipo -info *.a
... tutte le librerie (72 di loro) ha riferito di essere di tipo arm64 ad eccezione di 2 ...
libisac_fix.a
libisac_neon.a
Per qualsiasi motivo fossero ARMv7. All'inizio della giornata, stavo usando un clone del "webrtc" vecchio di pochi giorni. Allora, ricordo di aver sempre ottenuto solo 70 librerie. Ma poi, per altre ragioni, ho deciso di
gclient sync
Dopo di che, ho finito con 72 ... come tale, ho appena rimosso le sciocchezze libisac. Ora le 2 fat_lib erano di diverso tipo e potevo tranquillamente lipo.
Grazie phuongle .. funziona! – Dev