2015-07-14 9 views
5

Mam apk z Androidem, który korzysta z biblioteki natywnej (snappydb). Natywne biblioteki zajmują dużo miejsca, więc chcę zachować tylko architekturę armeabi-v7a ?Czy można bezpiecznie przechowywać tylko armeabi-v7a dla apk z Androidem?

Wiem, że nie jest w 100% bezpieczne usunięcie snappydb dla innych architektur, więc moje pytanie brzmi: jak niebezpieczne jest to? (ile urządzeń/użytkowników zgubię?)

Dla porównania minimalna wersja sdk, którą obsługuje moja aplikacja to 16 (JELLY_BEAN).

+0

Twoje pytanie nie jest jednoznaczne - twoje sformułowanie jest nieprecyzyjne i niejasne. Czy masz na myśli, że chcesz tylko kompilować i pakować 'snappydb' dla armeabi-v7a i nie zawierać tej samej biblioteki dla innych architektur? Co masz na myśli mówiąc "usuń inne natywne biblioteki" - jakie inne biblioteki? – Laogeodritt

+0

Przepraszam za niedogodności, ale nie rozumiem "snappydb" dla innych architektur. – huangcd

+0

Zostawię to jako komentarz, ponieważ nie mogę podać dobrze obsługiwanej odpowiedzi. Według mojej wiedzy prawie wszystkie urządzenia z Androidem to ARMv5 lub ARMv7 (nie wiem ile jest wersji 5). Od zeszłego roku jest kilka tabletów x86 (Intel) i wydaje mi się, że kilka lat temu zaczęły pojawiać się urządzenia MIPS, ale niewiele o nich słyszę i według mojej wiedzy nie są one popularne. Byłbym zaskoczony, gdyby nie-ARM miało więcej niż 5-10% udziału w rynku (ale znowu jest to anegdota, nie mam w tej chwili żadnych danych). Należy jednak pamiętać, że niektóre z urządzeń x86 to urządzenia Samsung. – Laogeodritt

Odpowiedz

0

prawdopodobnie nie zyska zbyt wiele od optymalizacji ramię v7a, a obecnie nie ma istotnych powodów, aby to 64-bitowy build . Ale właściciele MIPS i X86 będą Ci wdzięczni, jeśli będziesz mieć ich na swoim urządzeniu.

+0

Cześć Alex, co masz na myśli mówiąc "nie zyskujesz zbyt wiele na optymalizacji arm-v7a"? – huangcd

+0

Zwykle kod natywny skompilowany dla ** armeabi ** będzie działał poprawnie na urządzeniach obsługujących ** armeabi-v7a **, ale nie inaczej. Algorytmy chrupania liczb mogą być znacznie wydajniejsze, gdy są kompilowane dla ** armeabi-v7a **, ale jest to znacznie mniej istotne dla biblioteki baz danych. –

+0

Dzięki @ alex-cohn – huangcd

2

Proponuję za pomocą Gradle za productFlavors produkować różne APKs za ABI, jak niektórzy ABI może zawierać pewną optymalizację kodu montaż (SSE4, sse5, ARM Neon itp)

android { 
    ... 

    flavorDimensions "abi", "version" 

    productFlavors { 
     freeapp { 
      flavorDimension "version" 
      ... 
     } 

     x86 { 
      flavorDimension "abi" 
      ... 
     } 
    } 
} 

Lub jeśli używasz eksperymentalny Gradle wtyczki 'com.android.tools.build:gradle-experimental:0.1.0'

android.productFlavors { 
     create ("arm7") { 
      ndk.abiFilters += "armeabi-v7a" 
     } 
     create ("arm8") { 
      ndk.abiFilters += "arm64-v8a" 
     } 
     create ("x86-32") { 
      ndk.abiFilters += "x86" 
     } 
     // for detailed abiFilter descriptions, refer to "Supported ABIs" @ 
     // https://developer.android.com/ndk/guides/abis.html#sa 
     // build one including all productFlavors 
     create("fat") 
    } 
+0

Bardzo prawdziwe. Koszt manipulowania przy niewielu architekturach jest minimalny, ale w przypadku niektórych użytkowników nie ma możliwości korzystania z aplikacji. –

+0

@ nabil-hachicha różne pliki APK na ABI to naprawdę dobre rozwiązanie dla Google Play. Jednak w przypadku innych rynków, które nie obsługują wielu plików APK, trudno jest znaleźć sposób na prawidłową dystrybucję mojej aplikacji. I aktualizacja jest również trudnym problemem. – huangcd

Powiązane problemy