2016-08-18 85 views
5

Moja aplikacja używa Here SDK i Twilio SDK. Oba używają rodzimych bibliotek (tutaj SDK z natywnymi bibliotekami lokalnie podłączonymi z/libs i/jniLibs folderów, Twilio SDK podłączonym z jCenter). Ale w systemie Android 5.1 SDK zgłasza wyjątek "BRAK BRAKÓW: libMAPSJNI.so", chociaż ta biblioteka jest obecna w wynikowym pliku APK. Otworzyłem folder, w którym mój program został zainstalowany na urządzeniu i porównałem zawartość w dwóch przypadkach: z lub bez pakietu SDK Twilio. Różnica polega na tym, że po podłączeniu folderu/biblioteki Twilio API jest plik, i z oczywistych względów program ładujący nie widzi w nim natywnych bibliotek potrzebnych do zainicjowania tutaj pakietu SDK. W przypadku usunięcia zależności od grubości Twilio zespół występuje normalnie. Jaki może być powód i jak to naprawić? W razie potrzeby mogę dołączyć projekt testowy z tymi bibliotekamiNatywne biblioteki Gradle nie znaleziono na urządzeniu, ale są obecne w apk

Odpowiedz

12

Trzeba zmodyfikować build.gradle tak:

android { 
    (...) 
    splits { 
     abi { 
      enable true 
      reset() 
      include 'armeabi-v7a' 
      universalApk false 
     } 
    } 
    (...) 
} 

To prawdopodobnie dlatego Twilio SDK obsługuje x86 i TUTAJ SDK obecnie nie obsługuje .

+1

Doskonale, działa. Dziękuję Ci. – Lumen

+1

Hej Artem, dzięki za skakanie tutaj dla społeczności Twilio. Czy możemy wysłać ci koszulkę, aby podzielić się z nami naszą wdzięcznością? Wyślij wiadomość e-mail na adres [email protected], aby uzyskać szczegółowe informacje. –

+0

Dotyczy to innych architektur, których HERE SDK również nie obsługuje (np. Arm64-v8a) – AndrewJC

0

Definiując splits bloku można powiedzieć Gradle stworzyć APKs for each listed ABI:

include "armeabi", "armeabi-v7a", "x86", "mips" 

Ewentualnie można uwzględnić wszystkie żądane Abis w jeden APK dodając następujący filtr:

android { 
(...) 
defaultConfig { 
    (...) 
    ndk { 
     // allow only 32bit *.so libs 
     abiFilters "armeabi", "armeabi-v7a", "x86", "mips" 
    } 
} 

}

Oba podejścia wykluczą funkcjonalność 64-bitową, która może kolidować z 32-bitowym HERE SDK, ale ten drugi będzie obsługiwał więcej urządzeń za pomocą jednego pliku APK.

Niektóre biblioteki, jak nowy Android Room Persistence biblioteki 32-bitowe dodać smaki wraz z dwoma 64-bitowych ABI smakach arm64-V8A i x86_64. Od HERE SDK w chwili obecnej zapewnia tylko 32-bitowe lib powinno być bezpieczne, aby wykluczyć 64-bitowe warianty lib. Z drugiej strony oczekuje się, że 64-bitowe urządzenia mogą z wdziękiem obsługiwać 32-bitowe biblioteki.