2016-02-16 87 views
0

我建立了一個C++與在Eclipse NDK助洗劑(firestly創建與沒有MainActivity一個JNI項目),其作爲輸出提供,我在應用程序所指定的不同的平臺共享庫。 mk文件。輸出在/ obj/local /目錄中,分佈在平臺子目錄(armabi,mips,...,即我在上面的文件中指定的所有平臺)上。 現在,我想使用Android原生的項目,在我的共享庫被稱爲項目的機庫裏面這裏面共享庫(因此它是關於「天然調用本機」)。 如果我只爲一種類型的平臺(比如說「armeabi」)構建共享庫和Android本地應用程序,則一切正常。 我的問題是如何創建Android本機項目的make文件,Android.mk和Application.mk,以便爲所有平臺構建。 我想關鍵是在Android.mk文件,該文件,只是一個平臺,構建它看起來像這樣(在Linux上,爲的.so類型,信息C++ 11):構建NDK根據配備共享庫在多個平臺上

LOCAL_PATH := $(call my-dir) 

# Define the shared library module used by the calling JNI C++ module 
include $(CLEAR_VARS) 

LOCAL_SRC_FILES := libs/libCreateSharedWithJni.so 
LOCAL_MODULE := CreateSharedWithJni 
LOCAL_EXPORT_C_INCLUDES := libs/CreateSharedWithJni.h 
include $(PREBUILT_SHARED_LIBRARY) 

# Define the calling JNI C++ module 
include $(CLEAR_VARS) 
LOCAL_C_INCLUDES := $(LOCAL_PATH) 
LOCAL_MODULE := finalmodule 
LOCAL_SRC_FILES := CppJniCallShared.cpp 

LOCAL_SHARED_LIBRARIES := libCreateSharedWithJni 

include $(BUILD_SHARED_LIBRARY) 

謝謝!

+0

您是否嘗試過在你的Application.mk指定 「APP_ABI =所有」? – marktani

+0

是,得到了「讓錯誤1」與第一平臺的嘗試(arm64-V8A)。對於上述make文件的配置只有一個共享庫被接受,它應該是在同一個平臺上,我說。 –

回答

1

Got it! 在上述Android.mk文件只是改變線如使用在路徑中$(TARGET_ARCH_ABI)驅動器構建器來處理在Application.mk APP_ABI變量指定所有平臺以下

LOCAL_SRC_FILES := libs/$(TARGET_ARCH_ABI)/libCreateSoWithJni.so 

即。

相關問題