Недавно я начал играть с NDK, надеясь преобразовать свою библиотеку в Android. Моя проблема заключается в количестве двоичных файлов для каждой архитектуры, чем создается после успешной ndk-сборки Моя версия NDK — это r10c и сборка простой приложение (исполняемое), например следующее:
#include "stdio.h"
int main() {
printf("hello from Windows Mr. Android!!");
return 0;
}
создает 7 папок архитектуры для двоичных файлов в папках /libs, а именно:
- arm64-v8a
- армеаби
- armeabi-v7a
- мипс
- мипс64
- x86
- x86_64
Двоичные файлы занимают в среднем от 6 до 10 КБ, но все вместе занимает около 64 КБ (размер диска).
Моя проблема в том, что я разработал кросс-платформенный движок (Windows, Linux и OSX), и со статической привязкой я получаю размер около 2,5 МБ на каждом поддерживается платформа. Я не знаю о двоичном формате Android (ELF?), но я предполагаю, что он закончится примерно таким же размером.
Это означает, что если мне удастся преобразовать мою библиотеку в Android, я получу около (7 * 2,5) = 17,5 МБ двоичных файлов, охватывающих все архитектуры.
Неужели нужно собрать для всех архитектур с APP_ABI := all
и просто забыть? Android выбирает правильную версию при выполнении? Является ли это стандартным способом сборки для Android и уверенности, что все Android будут поддерживаться?
Дополнительный вопрос:
Я использую Android на VirtualBox и подключаюсь к общей папке своей ОС, но мой Android показывает двоичные файлы со знаком вопроса и спрашивает, как их открыть. Требуется ли для правильного выполнения какая-то связка, как в OSX? TX