使用 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
我已经针对 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