android - 如何在 NDK-BUILD 中构建 arcore camera_utility 共享库?

标签 android unity-game-engine arcore ndk-build

我正在尝试在 NDK_BUILD 中构建“arcore 相机实用程序”库,此处:https://github.com/google-ar/arcore-unity-sdk/tree/master/Assets/GoogleARCore/Examples/ComputerVision/Plugins/src

使用本指南:https://yeephycho.github.io/2016/10/20/How-to-Use-NDK-to-Build-A-Shared-Android_Native-Library/我至少能够让它在 libarcore_camera_utility.so 文件中编译。不仅如此,它实际上被我的应用程序在手机上识别出来,我没有收到 DLL 丢失错误,而是收到错误:“EntryPointNotFoundException:无法在‘arcore_camera_utility’中找到名为‘TextureReader_create’的入口点。”这意味着它至少现在找到了文件。

.so 的文件大小只有 6k,所以我似乎没有正确编译它,因为软件包附带的已经工作的 32 位版本是 100k,基于这个问题,我似乎遗漏了一些东西?:Entry point not found, Android .so file

我的 Android.mk 文件是:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := arcore_camera_utility_shared
LOCAL_C_INCLUDES += \
LOCAL_SRC_FILES := camera_utility.cc gl_utility.cc texture_reader.cc
include $(BUILD_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := arcore_camera_utility
LOCAL_WHOLE_STATIC_LIBRARIES := arcore_camera_utility_shared
include $(BUILD_SHARED_LIBRARY)

我的 Application.mk 文件包含:

APP_ABI := arm64-v8a
APP_PLATFORM := android-24
APP_STL := c++_static
APP_BUILD_SCRIPT := ./jni/Android.mk

我是否以省略代码的方式构建它?

最佳答案

为 arm 64 位目标编译 arcore_camera_utility-

1.) 创建一个名为“arcorelibrary”的新目录,然后是一个名为“jni”的子目录

2.) 下载此 zip:https://github.com/google-ar/arcore-unity-sdk/blob/master/Assets/GoogleARCore/Examples/ComputerVision/Plugins/src/arcore_camera_utility.zip

3.) 得到三个.cc文件和三个.h文件放在jni目录下

4.) 创建一个名为“Android.mk”的文件并将其放在 jni 目录中,内容如下:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:= arcore_camera_utility_static
LOCAL_SRC_FILES:= camera_utility.cc gl_utility.cc texture_reader.cc
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
LOCAL_EXPORT_LDLIBS    := -llog -landroid -lEGL -lGLESv2 -lGLESv3
include $(BUILD_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := arcore_camera_utility
LOCAL_WHOLE_STATIC_LIBRARIES := arcore_camera_utility_static
include $(BUILD_SHARED_LIBRARY)

5.) 创建一个名为“Application.mk”的文件并将其放在 jni 目录中,内容如下:

APP_ABI := arm64-v8a
APP_PLATFORM := android-24
APP_STL := c++_static
APP_BUILD_SCRIPT := ./jni/Android.mk

6.) 下载 Android NDK 并解压到某处(您需要的版本取决于您使用的 Unity 版本)https://developer.android.com/ndk/downloads/older_releases.html

7.) 打开终端或 powershell,转到项目的根目录 (arcorelibrary)

8.) 创建一条路径,指向您解压 Android NDK 的位置(Powershell 示例):

$env:Path += ";C:\[where-ever-you-unzipped]\android-ndk-r13b-windows-x86_64\android-ndk-r13b"

9.) 运行:

ndk-build.cmd

关于android - 如何在 NDK-BUILD 中构建 arcore camera_utility 共享库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58195077/

相关文章:

Android 缩进和悬挂缩进

android - 将敏感的应用程序数据作为电子邮件附件发送时,正确的权限处理是什么?

android - 尝试连接CC接收器时Android应用程序崩溃

bundle - Unity - 不要加载相同的资源包两次

arcore - 如何优化大型开放空间的 AR 标记?

android - 从 NDK 中的像素数组创建 Android 的可变位图

android - 如何更新我在 Android 上运行的使用 Unity 制作的游戏?

c# - 加密 Unity c# 标注到 Node js 服务器

java - 如何禁用 ARcore Sceneform Lighting?

android - 有没有办法让 Vuforia 和 ARCore 在同一个应用程序中?