我正在尝试在 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”的子目录
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/