2015-12-01 80 views
0

我是Android開發新手,我不知道如何包含Google Tango SDK附帶的庫。在已有項目中包含項目tango SDK

該應用程序就像是一個基於輕量級渲染引擎的C++核心的小型java包裝。它可以渲染一個模型並處理輸入。這一切都使用Android NDK以C++完成。

問題是我現在想使用像onXyzIjAvailable()這樣的函數。我如何包含和使用庫?我知道this,但我需要包含庫並訪問TangoService_connectOnXYZijAvailable()函數。

我想強調一下,我是android開發新手,我從未包含任何東西。我只編寫了自己的代碼或使用Android Studio下載幷包含了SDK,生成GRADLE文件並處理編譯/ makefles。我發現this SO post談論添加一個庫,但我不明白答案。我如何將它導入到這個項目並構建它?

非常感謝您的幫助。

回答

2
  1. 您必須下載最新的探戈API和SDK服務對於C here
  2. 解壓縮並放置文件夾(我將它們命名爲tango_client_api和tango_service_sdk)你想。我喜歡一個結構類似:
    • ProjectFolder /應用/
    • ProjectFolder /編譯/ ...
    • ...
    • tango_client_api/
    • tango_service_sdk/
    • 第三方/。 ..
    • ...
  3. 現在你甲肝e添加的lib路徑到你的Android.mk生成文件(位於象ProjectFolder路徑/應用/ src目錄/主/ JNI/Android.mk)如下:

    LOCAL_PATH := $(call my-dir) 
    PROJECT_ROOT_FROM_JNI:= ../../../../.. 
    PROJECT_ROOT:= $(call my-dir)/../../../../.. 
    include $(CLEAR_VARS) 
    
    LOCAL_MODULE := lib_your_project_name 
    LOCAL_SHARED_LIBRARIES := tango_client_api 
    LOCAL_CFLAGS := -std=c++11 
    
    LOCAL_C_INCLUDES := $(PROJECT_ROOT)/tango_service_sdk/include/ \ 
    
    LOCAL_SRC_FILES := your-project-file1.cc \ 
            your-project-file2.cc \ 
            your-project-file3.cc 
    
    LOCAL_LDLIBS := -llog -lGLESv2 -L$(SYSROOT)/usr/lib 
    include $(BUILD_SHARED_LIBRARY) 
    $(call import-add-path, $(PROJECT_ROOT)) 
    $(call import-module,tango_client_api) 
    
  4. 在您的.h文件,你可以使用例如:#include <tango_client_api.h> 來獲得所有TangoService_functions

就是這樣。我真的建議你看看github上的探戈C示例https://github.com/googlesamples/tango-examples-c

+0

我正在開發的項目沒有makefile。它只使用gradle。 gradle文件可以在這裏找到(http://pastebin.com/SZuRbNS7)。我設法添加文件夾並加載頭文件,但現在我得到鏈接器錯誤,因爲我沒有添加.so文件。 '錯誤:(110)未定義引用'TangoService_connectOnXYZijAvailable'' –

+1

嗨,通常你需要將需要一個共享對象來編譯源,但這意味着你將需要捆綁庫到apk中。這不是我們在Tango應用程序的大部分中所做的,因爲我們希望應用程序始終動態鏈接到system/lib下的庫。爲了達到這個目的,我們將一個.a文件放在我們的編譯源代碼文件夾中,然後進行編譯。更多詳細信息在這裏的tango示例c示例的.mk文件中:https://github.com/googlesamples/tango-examples-c/blob/master/tango_client_api/Android.mk –

相關問題