【发布时间】:2016-08-08 15:27:46
【问题描述】:
您好,我是 Android Studio 和 ARToolKit 的新手,我正在尝试在我的 Android 手机上安装和运行 ARToolKit 中的应用程序。
我已将 ntfsimple 导入 Android Studio,下载 ARtoolKit 时提供了 nftSimple
当我将设备连接到笔记本电脑并尝试对其进行调试时,它显示如下错误。
错误:(23) *** Android NDK:在包含之前缺少 LOCAL_MODULE BUILD_SHARED_LIBRARY 在 C:\Users\User\AndroidStudioProjects\NFT1\nftSimple\build\intermediates\ndk\debug\Android.mk .停下来。
错误:任务 ':nftSimple:compileDebugNdk' 执行失败。
com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Users\User\AppData\Local\Android\Sdk\ndk-bundle\ndk-build.cmd'' 以非零退出值 2 结束
这是我的 android.mk
MY_LOCAL_PATH := $(call my-dir)
LOCAL_PATH := $(MY_LOCAL_PATH)
# Pull ARToolKit into the build
include $(CLEAR_VARS)
ARTOOLKIT_DIR := $(MY_LOCAL_PATH)/../../../android
ARTOOLKIT_LIBDIR := $(call host-path, $(ARTOOLKIT_DIR)/obj/local/$(TARGET_ARCH_ABI))
define add_artoolkit_module
include $(CLEAR_VARS)
LOCAL_MODULE:=$1
LOCAL_SRC_FILES:=lib$1.a
include $(PREBUILT_STATIC_LIBRARY)
endef
ARTOOLKIT_LIBS := ar2 kpm util eden argsub_es armulti ar aricp jpeg arvideo
LOCAL_PATH := $(ARTOOLKIT_LIBDIR)
$(foreach module,$(ARTOOLKIT_LIBS),$(eval $(call add_artoolkit_module,$(module))))
LOCAL_PATH := $(MY_LOCAL_PATH)
# Android arvideo depends on CURL.
CURL_DIR := $(ARTOOLKIT_DIR)/jni/curl
CURL_LIBDIR := $(call host-path, $(CURL_DIR)/libs/$(TARGET_ARCH_ABI))
define add_curl_module
include $(CLEAR_VARS)
LOCAL_MODULE:=$1
#LOCAL_SRC_FILES:=lib$1.so
#include $(PREBUILT_SHARED_LIBRARY)
LOCAL_SRC_FILES:=lib$1.a
include $(PREBUILT_STATIC_LIBRARY)
endef
#CURL_LIBS := curl ssl crypto
CURL_LIBS := curl
LOCAL_PATH := $(CURL_LIBDIR)
$(foreach module,$(CURL_LIBS),$(eval $(call add_curl_module,$(module))))
LOCAL_PATH := $(MY_LOCAL_PATH)
include $(CLEAR_VARS)
# ARToolKit libs use lots of floating point, so don't compile in thumb mode.
LOCAL_ARM_MODE := arm
LOCAL_PATH := $(MY_LOCAL_PATH)
LOCAL_MODULE := nftSimpleNative
LOCAL_SRC_FILES := nftSimple.cpp ARMarkerNFT.c trackingSub.c
# Make sure DEBUG is defined for debug builds. (NDK already defines NDEBUG for release builds.)
ifeq ($(APP_OPTIM),debug)
LOCAL_CPPFLAGS += -DDEBUG
endif
LOCAL_C_INCLUDES += $(ARTOOLKIT_DIR)/../include/android $(ARTOOLKIT_DIR)/../include
LOCAL_LDLIBS += -llog -lGLESv1_CM -lz
LOCAL_WHOLE_STATIC_LIBRARIES += ar
LOCAL_STATIC_LIBRARIES += ar2 kpm util eden argsub_es armulti aricp cpufeatures jpeg arvideo
#LOCAL_SHARED_LIBRARIES += $(CURL_LIBS)
LOCAL_STATIC_LIBRARIES += $(CURL_LIBS)
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/cpufeatures)
这是我的 build-shared-libraru.mk
LOCAL_BUILD_SCRIPT := BUILD_SHARED_LIBRARY
LOCAL_MAKEFILE := $(local-makefile)
$(call check-defined-LOCAL_MODULE,$(LOCAL_BUILD_SCRIPT))
$(call check-LOCAL_MODULE,$(LOCAL_MAKEFILE))
$(call check-LOCAL_MODULE_FILENAME)
# we are building target objects
my := TARGET_
$(call handle-module-filename,lib,$(TARGET_SONAME_EXTENSION))
$(call handle-module-built)
LOCAL_MODULE_CLASS := SHARED_LIBRARY
include $(BUILD_SYSTEM)/build-module.mk
【问题讨论】:
标签: android android-studio android-ndk augmented-reality artoolkit