使用 Android Studio 和自定义 makefile 链接包含的平台库和 headers

Linking against included platform lib and headers with Android Studio and custom makefile

我已经针对 jniLibs 中的自定义库将 Android Studio 设置为 link,并用它编译了一个 shim。但是,我不知道如何 link 对抗 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 吗?

在此先感谢您的帮助!

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

APP_ABI := armeabi
APP_PLATFORM := android-15