首页 > 解决方案 > ndk android中无法导入libpng、libjpeg

问题描述

我分叉了用于裁剪的 Ucrop 库,并进行了一些更改。现在我必须构建 ndk 来进行更改。但是我不断收到此错误:

 Android NDK: jni/Android.mk: Cannot find module with tag 'libpng' in import path    
 Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ?    
 Android NDK: The following directories were searched:    
 Android NDK: jni/Android.mk:15: *** Android NDK: Aborting.    .  Stop.

该项目使用Cimg库。

这是我的 Android.mk 文件:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE    := ucrop
LOCAL_SRC_FILES := uCrop.cpp

LOCAL_LDLIBS    := -landroid -llog -lz
LOCAL_STATIC_LIBRARIES := libpng libjpeg_static

include $(BUILD_SHARED_LIBRARY)

$(call import-module,libpng)
$(call import-module,libjpeg)

我尝试了所有在线提供的解决方案。但没有任何效果。我尝试了“在 android ndk 项目中添加 libpng ”和许多答案。

标签: androidandroid-ndkjava-native-interfacendk-buildcimg

解决方案


Atlast 我让它工作了。这很难,因为我是 NDK 的初学者。但我会在这里发布我是如何做到的,因为它可能会帮助其他初学者。

首先我下载了​​ libpnglibjpeg,并将其保存在Android/Sdk/ndk-bundle/sources. 我分别将它们保存在名称 libpng 和 libjpeg 下。

然后修改Android.mk如下,

LOCAL_PATH := $(call my-dir)

LOCAL_P := /usr/lib/

include $(CLEAR_VARS)

LOCAL_MODULE    := ucrop
LOCAL_SRC_FILES := uCrop.cpp

LOCAL_LDLIBS    := -landroid -llog -lz
LOCAL_STATIC_LIBRARIES := libpng libjpeg9

include $(BUILD_SHARED_LIBRARY)

$(call import-module,libpng/jni)
$(call import-module,libjpeg/libjpeg9)

然后设置环境路径 NDK_MODULE_PATH 如下,

export NDK_BUILD_PATH=/home/jerin/Android/Sdk/ndk-bundle/sources

这很重要,因为在 ndk 构建期间,它会在此路径中查找库。

You can compile ndk-build during gradle build by following [this][1]. Right-click on the module you would like to link to your native library, such as the app module, and select Link C++ Project with Gradle from the menu. Then select ndk-build, and give path to Android.mk


推荐阅读