Как создать общую библиотеку arcore camera_utility в NDK-BUILD? - PullRequest
1 голос
/ 02 октября 2019

Я пытаюсь собрать библиотеку 'arcore camera utility' в NDK_BUILD, здесь: 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: не удалось найти точку входа с именем« TextureReader_create »в« arcore_camera_utility »». что означает, что он, по крайней мере, нашел файл, теперь.

Размер файла .so составляет всего 6 КБ, поэтому кажется, что я неправильно его компилирую, поскольку уже работающая 32-битная версия, поставляемая с пакетом, составляет 100 КБ. Исходя из этого, кажется, что я что-то пропускаю ?: Точка входа не найдена, Android .so файл

Мой файл 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

Создаю ли я его таким образом, чтобы исключить код?

1 Ответ

0 голосов
/ 03 октября 2019

Чтобы скомпилировать arcore_camera_utility для 64-битной цели arm-

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...