Мисля, че отговорът на alpinescrambler вероятно е най-приложим, но ето някои неща, които можете да направите, дори ако следвате неговото предложение за множество APK файлове.
Първо, можете да пропуснете armeabi-v7a
, тъй като може да бъде удовлетворено от armeabi
.
Второ, изградете своя споделен обект и споделения обект ffmpeg с -Os
.
Трето, изградете своя споделен обект и споделения обект ffmpeg с -ffunction-sections
. По-късно неизползваните функции могат да бъдат премахнати. Всъщност ето типичен ред за компилиране за armeabi
(за един от моите проекти):
arm-linux-androideabi-g++ -MMD -MP -MF …/MyProj/obj/local/armeabi/objs/prng/libprng.o.d -fpic
-ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv5te
-mtune=xscale -msoft-float -mthumb -Os -g -DNDEBUG -fomit-frame-pointer
-fno-strict-aliasing -finline-limit=64 -I/opt/android-ndk-r9/sources/cxx-stl/stlport/stlport
-I/opt/android-ndk-r9/sources/cxx-stl/system/include -I/usr/local/cryptopp/android-armeabi/include
-I…/MyProj/jni -DANDROID -Wa,--noexecstack -frtti -fexceptions -I/opt/android-ndk-r9/platforms
/android-14/arch-arm/usr/include -c …/MyProj/jni/libprng.cpp
-o …/MyProj/obj/local/armeabi/objs/prng/libprng.o
Четвърто, изградете своя споделен обект и споделения обект на ffmpeg с 16-битови инструкции за палец с -mthumb
(а не 32-битови инструкции за ръка с -marm
).
Пето, използвайте __attribute__ ((visibility ("hidden")))
във вашия споделен обект и споделения обект ffmpeg. Това ще запази експортните таблици малки. Това също ще доведе до по-бързо време за зареждане.
Шесто, създайте своя споделен обект и споделения обект ffmpeg с -Wl,--exclude-libs,ALL
, за да сте сигурни, че няма да експортирате повторно други библиотечни функции.
Седмо, стартирайте arm-linux-androideabi-strip --strip-unneeded
на вашия споделен обект и споделения обект ffmpeg. Това е възможно, защото сте компилирали с -ffunction-sections
.
Осмо, стартирайте arm-linux-androideabi-strip --strip-all
на вашия споделен обект и споделения обект ffmpeg.
Освен това имате ли изобщо нужда от MIPS? Не успях да намеря таблет. Опитите ми да намеря такъв бяха посрещнати с "затворено, извън темата".
person
jww
schedule
13.09.2014