我搜索了很多关于将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文件中进行哪些更改?
答案 0 :(得分:16)
我还有另一种方式:
从此处下载所有文件并将其粘贴到系统中任何位置的新文件夹中:
https://github.com/julienr/libpng-android
进入该文件夹并运行:
./build.sh
您将在[YOUR_FOLDER]/obj/local/armeabi/libpng.a
中获得一个libpng.a文件
将此文件复制到:
[YOUR_ANDROID_NDK_FOLDER]/platforms/[ALL_FOLDERS_IN_HERE]/arch-arm/usr/lib/
现在您可以使用简单的行在所有项目中使用libpng:
LOCAL_LDLIBS += -lpng
你只需要在你的cpp中包含这个:
#include <png.h>
玩得开心!