Как написать скрипт Android.mk?

jni/
    Android.mk     -> libmyso.so
    folder1/
        Android.mk  -> libso1.so
    folder2/
        Android.mk  -> libso2.so

Как скомпилировать libso1.so и libso2.so в libmyso.so? Таким образом, я могу загружать только libmyso.so в коде Java, и нет необходимости загружать libso1.so и libso2.so соответственно.

1 ответ

Решение

Если libso1.so а также libso2.so являются зависимостями libmyso.so (например, объявлено через LOCAL_SHARED_LIBRARIES в Android.mk, они будут загружены автоматически на Android 5.0 - тот факт, что вам нужно загрузить их в обратном порядке (загрузка сначала зависимостей, затем libmyso.so само по себе) является лишь ограничением компоновщика в старых версиях Android.

Если вы просто хотите иметь один .so файл, содержащий весь код, измените Android.mk за libso1.so а также libso2.so сделать BUILD_STATIC_LIBRARY вместо BUILD_SHARED_LIBRARYи ссылаться на них через LOCAL_STATIC_LIBRARIES вместо LOCAL_SHARED_LIBRARIES, Тогда они будут встроены, и у вас есть только один .so файл для распространения и загрузки.

Другие вопросы по тегам