在android ndk项目中添加libpng

时间:2013-01-10 16:48:37

标签: android-ndk libpng

我搜索了很多关于将libpng链接到我的android ndk项目的主题,但我找到了正确的答案,我希望有人会帮助我。

这是我项目的层次结构:

jni

different_cpp_files
different_hpp_files
Android.mk
libpng
    different_cpp_files
    different_hpp_files
    Android.mk

libpng文件夹中的Android.mk:


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)

我想一切都在这里..

jni文件夹中的Android.mk:


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)

最后一行表明我得到了像native_app_glue lib这样的libpng(在android-ndk源码目录下)现在我想从我的项目中编译libpng。我需要在Android.mk文件中进行哪些更改?

1 个答案:

答案 0 :(得分:16)

我还有另一种方式:

  1. 从此处下载所有文件并将其粘贴到系统中任何位置的新文件夹中:
    https://github.com/julienr/libpng-android

  2. 进入该文件夹并运行:
    ./build.sh

  3. 您将在[YOUR_FOLDER]/obj/local/armeabi/libpng.a中获得一个libpng.a文件 将此文件复制到:
    [YOUR_ANDROID_NDK_FOLDER]/platforms/[ALL_FOLDERS_IN_HERE]/arch-arm/usr/lib/

  4. 现在您可以使用简单的行在所有项目中使用libpng:
    LOCAL_LDLIBS += -lpng

  5. 你只需要在你的cpp中包含这个:
    #include <png.h>

  6. 玩得开心!