Добавление 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>

Удачи!