Как написать скрипт 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
файл для распространения и загрузки.