Наскоро започнах да играя с NDK, надявайки се да конвертирам библиотеката си в Android. Проблемът ми е броят на двоичните файлове за архитектура, отколкото се произвеждат след успешна ndk-build Моята NDK версия е r10c и изграждането на проста приложение (изпълнимо) като следното:
#include "stdio.h"
int main() {
printf("hello from Windows Mr. Android!!");
return 0;
}
създава 7 папки с архитектура за двоичните файлове в папките /libs, които са:
- arm64-v8a
- армеаби
- armeabi-v7a
- mips
- mips64
- x86
- x86_64
Двоичните файлове са средно от 6 до 10 KB, но всички заедно са около 64 KB (размер на диска).
Проблемът ми е, че разработих крос-платформен двигател (Windows, Linux и OSX) и със статичното свързване получавам размер от около 2,5MB на всеки поддържана платформа. Не знам за двоичния формат на Android (ELF?), но предполагам, че ще завърши с приблизително същия размер.
Това означава, че ако успея да преобразувам библиотеката си в Android, ще се окажа с около (7 * 2,5) = 17,5 MB двоични файлове, покриващи всички архитектури.
Наистина е необходимо да се изгради за всички архитектури с APP_ABI := all
и просто да се забрави? Android избира ли правилната версия при изпълнение? Това ли е стандартният начин за създаване на Android и да знаете, че всеки Android там ще бъде поддържан?
Бонус въпрос:
Използвам Android на VirtualBox и съм свързан към споделена папка към моята операционна система, но моят Android показва двоичните файлове с въпросителен знак и ме пита как да ги отворя. Това изисква ли някакъв вид групиране като в OSX, за да се изпълни правилно? tx