2013-08-12 76 views
1

我有兩個靜態庫,我從一個指定的項目構建而成。NDK - 從靜態庫構建ARMv5/ARMv7共享庫

ARMv5/myLib.a 
ARMv7/myLib.a 

現在,我要使用這些庫,並建立兩個共享庫的ARMv5和ARMv7平臺。

有沒有辦法指定我想要使用兩個版本的靜態庫的事實? 現在,我做我的Ant腳本壞招剛剛在於:

  1. 複製靜態的ARMv5庫。
  2. 構建共享庫(ARMv5)。
  3. 刪除ARMv5靜態庫並複製ARMv7版本。
  4. 再次構建共享庫(ARMv7)。

我知道有

"APP_ABI := armeabi armeabi-v7a" 

但如何告訴他,我想從兩個構建分離靜態庫,而不是僅僅從一個?

問候,

回答

1

可能不是最好的方法,但是,你可以嘗試使用,如果在你的Android.mk else語句和檢查APP_ABI值,並使用相應的庫。

ifeq ($(APP_ABI), armeabi-v7a) 
    LOCAL_SRC_FILES := ARMv7/myLib.a 
else 
    LOCAL_SRC_FILES := ARMv5/myLib.a 
endif 

或者在您直接鏈接它們的情況下使用LOCAL_STATIC_LIBRARIES。當然,你的Application.mk應該包括你說行:

APP_ABI := armeabi armeabi-v7a 
+0

其實,我沒有一個靜態庫了,但我的建設在ARMv5中/ V7共享庫中的所有資源。但是,在構建過程中,我獲得了很多「多重定義......」。任何想法 ? – hico

+0

很難說,沒有看到你的實現的當前結構,但明確地說你包含或定義了一個成員在多個地方。我測試了我的解決方案,如果您堅持使用靜態庫,它將解決您的問題。無論如何,你目前的問題是我想的另一個問題。 – eozgonul

+0

是的,我發佈了另一個問題,因爲它完全不同於這個(http://stackoverflow.com/questions/18187853/ndk-android-cant-build-armv5-and-v7-at-the-same-time)。順便謝謝你的幫助! – hico