SDK tömörítési könyvtárak natív Android-alkalmazások

Minden Android Hagyományosan alkalmazások Java-ban írt * mert az elegáns objektum-orientált tervezés, valamint annak a ténynek köszönhető, hogy a AndroidSDK kínál cross-platform lehetőség a Java. Időről időre, a fejlesztők kell használni a natív Android felület, különösen, ha a memória kezelése és a teljesítmény legfontosabb paraméterek. A natív Android interfész útján biztosítják a NDK, amely támogatja a fejlődést a C / C ++.
A Google szoftverek piacán nagyon sok NDK-alkalmazásokat. Csökkentése érdekében a csomag mérete, néhány független szoftvergyártók előállítani egy APK helyett FATAPK (egyetlen APK tartalmaz sem ARM *, bármely x86-könyvtárat, miközben FATAPK tartalmaz mind egy és a másik). Azonban FATAPK nyilvánvaló előnnyel egyetlen APK. Könnyebb hozzáférés a végfelhasználók számára, és a könyvtárak nem fedik egymást a folyamat az alkalmazás frissítése. Így a fejlesztők hajlanak arra, hogy a szoftveres ökoszisztéma számára FATAPK Androidh86. De hogyan lehet csökkenteni a hatalmas méret FATAPK fájlokat?
Zip * protivLZMA

1. ábra: összehasonlítása egyetlen fájl mérete tömörítés utáni sZip * iLZMA1

2. ábra: az összetett fájlok méretű (amely zheCPU architektúra) összenyomás után sZip * iLZMA1

3. ábra: összehasonlítása összetett fájlok méretek (razlichnoyCPU architektúra) összenyomás után sZip * iLZMA1

4. ábra: összehasonlítása a méret a három azonos fájlok tömörítés után sZip * iLZMA1
4. A fenti táblázatban arra lehet következtetni, hogy az LZMA drámaian csökkentheti redundancia a fájlokat legkifejezettebb három azonos fájlokat. Ez nagyszerű tömörítés natív könyvtárak. Általában a natív könyvtár ugyanazt a kódot használja az építészet «armeabi», «armeabi-v7a», «x86» és még a könyvtárak «mips». Mert «armeabi-v7a» - van ARMNEONi kód nélkül NEON. Ezek a könyvtárak információnk többlet miatt ugyanazt a forráskódot. Még abban az esetben a különböző építészeti, például libffmpeg_armv7_vfpv3.so és libffmpeg_x86.so, ahol az egyik - ARMEABI, és a másik - x86, a tömörítési arány 40%, míg egy fájl, ez az arány csak 20%.
SDK natív tömörítés könyvtár
Az SDK API nagyon egyszerű. Az első alkalommal futtatja az alkalmazást kódot kicsomagolja a teljes könyvtárát natív állítja könyvtárban.
statikus logikai NewInstance (Context CONT, Handler HDL, logikai showProgress)
statikus DecRawso GetInstance ()
Karakterlánc GetPath (String LIBNAME)
Javasoljuk, hogy módosítsa a forráskódot, és csak hozzá newInstance, amikor az alkalmazás elindul, akkor cserélje system.loadlibrary (***) a system.load (DecRawso. GetInstance () .GetPath (***)). Miután ezek a kisebb változtatásokat APK kisebb lesz, de továbbra is a megszokott módon működik.
Ha a fejlesztők elegendő haladékot a kérelem NewInstancei első terhelési natív könyvtárak, meg kell hívni (NewInstance (folyt, null, false)) anélkül, hogy a Handler érv. Ellenkező esetben úgy kell tekinteni, Handler számára «decodeend» aszinkron üzeneteket.

A speciális funkciók kompressziós SDK natív könyvtár
Amellett, hogy a kompressziós LZMA, ez a SDK további funkcionalitásokkal tartalmazza a natív x86 Library:
Li Yuming ([email protected]) - Software Engineer Intel Software and Services Group alkalmazásokhoz. Abban a pillanatban, ő dolgozik multimédiás alkalmazások és a teljesítmény optimalizálása, különösen az Android mobil platformon.