使用Android Studio和自定义makefile链接包含的平台lib和标头

时间:2015-02-04 00:54:03

标签: android-studio makefile android-ndk

我设法让Android Studio设置链接到jniLibs中的自定义库并使用它编译填充程序。但是,我无法弄清楚如何与EGL联系。

C ++ Shim

#include <jni.h>
#include <android/log.h>

#include <EGL/egl.h>

extern "C" {

// Code and stuff

} // End extern

Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := faceblaster-engine
LOCAL_SRC_FILES := ../jniLibs/$(TARGET_ARCH_ABI)/libfaceblaster-engine.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE    := faceblaster
LOCAL_SRC_FILES := gl-tests.cpp
LOCAL_SHARED_LIBRARIES := faceblaster-engine libEGL
include $(BUILD_SHARED_LIBRARY)

我收到以下错误:

fatal error: EGL/egl.h: No such file or directory

我的猜测是假设EGL / egl.h也应该在app/src/main/jni中,并抛出错误,因为它显然不在该目录中。

然而,它确实找到了android / log.h,所以它必须知道它们在哪里,但是当它抓住EGL的时候就失败了。有没有人想过为什么EGL没有进入?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

事实证明,你需要在与Android.mk相同的目录中使用名为Application.mk的东西来定义目标和东西。我刚刚将其添加到该文件中,一切都按预期工作:

APP_ABI := armeabi
APP_PLATFORM := android-15