Short: Как система Android NDK преобразования "APP_ABI: = armeabi-v7a твердолобый" конечным .so файлов, расположенных в «LIBS/armeabi-v7a «? Каков правильный способ сделать то же самое в Android.mk? В настоящее время, чтобы построить автономный исполняемый файл и поместить его в папках, соответствующих различным АБИС я использую это, что это выглядит некрасиво из-за жесткого кодированной «ifeq ($ (TARGET_ARCH_ABI), armeabi-v7a-жесткий)»:Android NDK: построить жира бинарного с BUILD_EXECUTABLE и armeabi-v7a-жесткий
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)
Long: В моем приложении для Android я использую набор автономных двоичных файлов. После сборки они хранятся в ресурсах APK. При первом запуске приложения я копирую их в свою частную папку приложения, chmod 777, а затем использую их как системные утилиты, такие как «ls» или «cp». Я хочу создать «fat binary»: один APK, который имеет двоичные файлы для всех ABI и выбирает правильный двоичный файл для текущего устройства после установки. Для .so-библиотек Android делает все это автоматически. И «APP_ABI: = armeabi-v7a-hard» является внутренним для системы сборки NDK, это указано в документах, а окончательные .so-файлы для «armeabi-v7a-hard» помещаются в папку «armeabi-v7a». Я могу сделать то же самое для своих двоичных файлов, и в настоящее время у меня есть способ, который работает, однако он выглядит уродливым.
Каким образом можно разместить выходные двоичные файлы в пользовательских папках с именами ABI и обрабатывать «armeabi-v7a-hard» до «armeabi-v7a»?
Большое спасибо, что именно то, что я искал. Я попытался найти это место в источниках NDK, но «setup-toolchain.mk» ускользнул от моего внимания. В настоящее время я также ищу путь для поиска ABI во время работы. Я знаю о 'Build.CPU_ABI',' Build.CPU_ABI2' и 'System.getProperty (« os.arch »)', однако я хочу найти, как он обрабатывается в источниках установщика пакетов Android, почти найденных в данный момент. Но ваш вариант с 'lib $ {TOOLNAME} .so' тоже интересен, еще раз спасибо. – Dima