Ошибка сборки собственной библиотеки Android Studio при использовании ndk-build - PullRequest
0 голосов
/ 06 мая 2018

Я бы хотел создавать код на языке c / c ++ с помощью Android Studio вместо использования скрипта ndk-build вручную (до сих пор я всегда использовал Android.mk, Application.mk и скрипт ndk-build для сборки библиотеки .so ). Я пытаюсь настроить проект. В моем build.gradle у меня есть следующие строки:

externalNativeBuild {
        ndkBuild {
            path 'src/main/jni/Android.mk'
        }
    }

В каталоге src / main / jni находится файл Application.mk и ВСЕ исходный код C / C ++:

jni/
 -jpeg8d-master/   (a directory)
 -other directories..
 -android.mk
 -application.mk
 -common.h
 -other .c/.cpp/.h files

файл common.h ссылается на файл jpeglib.h в (локальном) каталоге jpeg8d-master /. По-старому (запуск ndk-build в папке jni /) все работало. Когда я пытаюсь создать проект (Ctrl-F9) в Android Studio, на вкладке «Сборка» я вижу следующую ошибку:

Build command failed.
Error while executing process D:\android\android-ndk-r16b\ndk-build.cmd with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=C:\android\android-studio-workspace\MyAPP\app\src\main\jni\Android.mk NDK_APPLICATION_MK=C:\android\android-studio-workspace\MyApp\app\src\main\jni\Application.mk APP_ABI=x86_64 NDK_ALL_ABIS=x86_64 NDK_DEBUG=1 APP_PLATFORM=android-21 NDK_OUT=C:/android/android-studio-workspace/MyApp/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT=C:\android\android-studio-workspace\MyApp\app\build\intermediates\ndkBuild\debug\lib C:/android/android-studio-workspace/MyApp/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/libnative.so}
[x86_64] Compile++      : native <= wrapper.cpp
In file included from C:/android/android-studio-workspace/MyApp/app/src/main/jni/wrapper.cpp:29:
C:/android/android-studio-workspace/MyApp/app/src/main/jni/common.h:31:10: warning: non-portable path to file '"eigen/Eigen/Dense"'; specified path differs in case from file name on disk [-Wnonportable-include-path]
#include "eigen/eigen/Dense"
         ^~~~~~~~~~~~~~~~~~~
         "eigen/Eigen/Dense"
C:/android/android-studio-workspace/MyApp/app/src/main/jni/common.h:209:10: fatal error: 'jpeglib.h' file not found
#include        "jpeglib.h"
                ^~~~~~~~~~~
1 warning and 1 error generated.
make: *** [C:/android/android-studio-workspace/MyApp/app/build/intermediates/ndkBuild/debug/obj/local/x86_64/objs/native/wrapper.o] Error 1

Возможно, команда ndk-build не вызывается из каталога jni /, или что-то еще отсутствует. Любая помощь?

1 Ответ

0 голосов
/ 06 мая 2018

Вы правы, текущий каталог, когда Android Studio запускает ndk-build, является каталогом приложения (где у вас есть файл build.gradle , в вашем случае это C:/android/android-studio-workspace/MyApp/app).

Вы должны исправить свой Android.mk , чтобы все пути были включены относительно LOCAL_PATH , например

LOCAL_C_INCLUDES += $(LOCAL_PATH)/eigen

и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...