Добавление libpng в проект android ndk
Я искал множество тем о привязке libpng к моему проекту android ndk, но я нашел правильный ответ для своей проблемы, и я надеюсь, что кто-то мне поможет.
Это иерархия моего проекта:
jni
different_cpp_files
different_hpp_files
Android.mk
libpng
different_cpp_files
different_hpp_files
Android.mk
Android.mk в папке libpng:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LS_C=$(subst $(1)/,,$(wildcard $(1)/*.c))
LOCAL_MODULE := png
LOCAL_SRC_FILES := \
$(filter-out example.c pngtest.c,$(call LS_C,$(LOCAL_PATH)))
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
LOCAL_EXPORT_LDLIBS := -lz
include $(BUILD_STATIC_LIBRARY)
Я полагаю, что все здесь.
Android.mk в папке jni:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LS_CPP=$(subst $(1)/,,$(wildcard $(1)/*.cpp))
LOCAL_MODULE := pacman
LOCAL_CFLAGS := -Wno-psabi
LOCAL_SRC_FILES := $(call LS_CPP,$(LOCAL_PATH))
LOCAL_LDLIBS := -landroid -llog -lEGL -lGLESv1_CM -lOpenSLES
LOCAL_STATIC_LIBRARIES := android_native_app_glue png
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)
$(call import-module,libpng)
В последней строке показано, что я получил libpng как native_app_glue lib (в каталоге источников android-ndk). Теперь я хочу скомпилировать libpng из моего проекта. Что мне нужно изменить в файле Android.mk?
Ответы
Ответ 1
У меня есть другой способ для вас:
-
Загрузите все файлы и вставьте его в новую папку в любом месте вашей системы:
https://github.com/julienr/libpng-android
-
зайдите в папку и запустите:
./build.sh
-
Вы получите файл libpng.a в [YOUR_FOLDER]/obj/local/armeabi/libpng.a
Скопируйте этот файл в:
[YOUR_ANDROID_NDK_FOLDER]/platforms/[ALL_FOLDERS_IN_HERE]/arch-arm/usr/lib/
-
теперь вы можете использовать libpng во всех своих проектах с помощью простой строки:
LOCAL_LDLIBS += -lpng
-
вам нужно включить это только в свои cpp:
#include <png.h>
Удачи!