Кратко: Как система Android NDK преобразует "APP_ABI: = armeabi-v7a-hard" в окончательные файлы .so, расположенные в "libs / armeabi-v7a"? Как правильно сделать то же самое в Android.mk? В настоящее время, чтобы создать автономный исполняемый файл и поместить его в папки, соответствующие различным ABI, я использую его, который выглядит некрасиво из-за жестко запрограммированного "ifeq ($ (TARGET_ARCH_ABI), armeabi-v7a-hard)":
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
SAVED_NDK_APP_DST_DIR := $(NDK_APP_DST_DIR)
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a-hard)
NDK_APP_DST_DIR := assets/armeabi-v7a
else
NDK_APP_DST_DIR := assets/$(TARGET_ARCH_ABI)
endif
LOCAL_MODULE := run_pie
LOCAL_SRC_FILES := run_pie.c
include $(BUILD_EXECUTABLE)
NDK_APP_DST_DIR := $(SAVED_NDK_APP_DST_DIR)
Длинный: в своем приложении для Android я использую набор автономных двоичных файлов. После сборки они сохраняются в ресурсах APK. При первом запуске приложения я копирую их в личную папку моего приложения, chmod 777, а затем использую их как системные утилиты, такие как «ls» или «cp». Я хочу создать «толстый двоичный файл»: один APK, в котором есть двоичные файлы для всех ABI, и выбрать правильный двоичный файл для текущего устройства после установки. Для библиотек .so Android делает все это автоматически. И "APP_ABI: = armeabi-v7a-hard" является внутренним для системы сборки NDK, это указано в документации, а окончательные файлы .so для "armeabi-v7a-hard" помещаются в папку "armeabi-v7a". Я могу сделать то же самое для своих двоичных файлов, и в настоящее время у меня есть способ, который работает, однако он выглядит некрасиво.
Как правильно размещать выходные двоичные файлы в пользовательских папках с именами ABI и обрабатывать преобразование «armeabi-v7a-hard» в «armeabi-v7a»?