Как написать Android.mk для библиотеки, используя Gnu makefile - PullRequest
4 голосов
/ 04 мая 2010

Я хочу создать приложение для Android, используя огромные сторонние собственные библиотеки, использующие инструменты сборки Gnu (make-файл gnu).

Мой вопрос заключается в том, как написать файлы «Android.mk» для этих библиотек, чтобы собрать их с помощью системы сборки Android или Android NDK.

Заранее спасибо

Ответы [ 4 ]

0 голосов
/ 20 мая 2012

Более поздние выпуски ndk позволяют вам генерировать автономный набор инструментов, который заключает в себе большую часть уникальности android, так что он может быть вызван больше как обычный gcc и программы поддержки. Это в некоторой степени подходит для использования с существующими системами сборки проекта, хотя настройка сценариев, предполагающих возможность выполнения кода проверки целевых функций на хосте, не удастся, как это происходит в случае кросс-компиляции.

0 голосов
/ 13 июля 2010

Единственный возможный способ - написать make-файлы NDK. Многие большие библиотеки были портированы таким образом. Обычно вы должны запустить скрипт configure для генерации файлов config.h и config.mak. Вы будете использовать config.mak для перечисления ваших источников. В сети есть учебники по портированию некоторых популярных библиотек, которые будут созданы с помощью Android NDK. Я имел успех с freetype, ffmpeg, SDL, DevIL и другими.

0 голосов
/ 16 февраля 2012

Вы можете использовать следующий трюк: скачать agcc , а затем скомпилировать вашу библиотеку с ./configure CC=agcc CXX=agcc --host=arm-linux-androideabi && make. После этого создайте простой jni/Android.mk, например:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES := jni.cpp # this file will provide native methods for java part
LOCAL_LDLIBS += libYourLibraryBuiltWithGNUToolchain.a
LOCAL_MODULE := YourSoLibrary

include $(BUILD_SHARED_LIBRARY)

После этого вы можете собрать свою библиотеку so с помощью скрипта ndk-build.

0 голосов
/ 13 июля 2010

Насколько я понимаю, вам нужно конвертировать make-файлы в формат Android :( и используйте ndk_buidl для их сборки

...