Невозможно импортировать libpng, libjpeg в ndk android

Я разветвил библиотеку 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)

Я пробовал все решения, которые даны в Интернете. Но ничего не сработало. Я пробовал «Добавить libpng в проект android ndk" и получил много ответов.


person Jerin A Mathews    schedule 02.07.2018    source источник
comment
Почему у вас здесь тег CImg?   -  person Mark Setchell    schedule 02.07.2018
comment
Библиотека использует CImg. И libpng и libjpeg для CImg. Поэтому я хотел бы знать, если кто-нибудь использовал CImg и успешно импортировал libpng и libjpeg,   -  person Jerin A Mathews    schedule 02.07.2018
comment
А, хорошо, я вижу. Извините, я не могу помочь - вы за пределами моих знаний!   -  person Mark Setchell    schedule 02.07.2018
comment
Ох, хорошо. Я пытался решить это в течение двух дней, и я не могу. Так расстроен. Я знаю, что это непросто, потому что нигде в Интернете нет хорошего решения. Это кажется простым, но так трудно решить.   -  person Jerin A Mathews    schedule 02.07.2018
comment
а) Вы установили libpng? b) Можете ли вы точно определить, где libpng установлено, т. е. в каком каталоге? c) Можете ли вы вручную добавить полный явный путь к каталогу, содержащему libpng, в свою сборку, не надеясь, что import-module найдет его для вас? Одни бредовые идеи... :-)   -  person Mark Setchell    schedule 02.07.2018
comment
В одном из способов, которые я пробовал, я установил libpng и получил путь. Это не работает. Но не могли бы вы рассказать мне, как вручную добавить полный и явный путь к каталогу, содержащему libpng, в вашу сборку. Просто для подтверждения, так как я новичок в NDK.   -  person Jerin A Mathews    schedule 02.07.2018
comment
У меня нет опыта работы с Android, но это похоже на Makefile. Итак, в качестве теста вы можете добавить -ljpeg -llibpng и -L/path/to/directory/containing/libraries после -lz   -  person Mark Setchell    schedule 02.07.2018


Ответы (1)


Atlast я заставил это работать. Это было тяжело, потому что я был новичком в NDK. Но я опубликую, как я это сделал здесь, так как это может помочь другим новичкам.

Сначала я загружаю libpng и libjpeg и сохранил его под 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

person Jerin A Mathews    schedule 08.07.2018
comment
извините за английский. Я также впервые использую ndk и ucrop. И я должен изменить ndk для поддержки mips, mips64. Не могли бы вы сказать мне, какую версию ndk вы используете? (Я пробовал r10e, r11c, r12b, r13b) моя ошибка от r13b jni/CImg.h:275:10: фатальная ошибка: файл 'omp.h' не найден #include ‹omp.h› другая ошибка: jni/CImg.h:321:21: фатальная ошибка: jpeglib.h: нет такого файла или каталога #include jpeglib.h - person Soo Chun Jung; 01.11.2018
comment
@SooChunJung Я использовал ndk в студии Android, я думаю, это r16 - person Jerin A Mathews; 01.11.2018
comment
построить успех! Большое спасибо :) - person Soo Chun Jung; 02.11.2018
comment
Отлично, рад, что это помогло :) - person Jerin A Mathews; 02.11.2018
comment
Я получил следующую ошибку: не удается найти модуль с тегом «libpng/jni» в пути импорта. - person Ashish Garg; 04.09.2020