簡體   English   中英

Android Eclipse:如何從另一個項目引用庫項目的NDK庫?

[英]Android Eclipse: How to reference library project's NDK library from another project?

我有一個Android Eclipse庫項目“ Lib”,其中包含使用NDK構建的Java和C代碼。 我還有另一個依賴於Lib的項目“ App”。 App還包含Java和C。我的目標是擁有多個類似Eclipse App的項目,每個項目都使用Lib項目。

App中的Java例程在Lib中調用Java例程,在Lib中調用C代碼。 這樣可以在設備上編譯,鏈接和完美運行。

現在,我想添加一個從App中的C代碼到Lib中的C代碼的調用。 我的第一個問題是頭文件。 我需要包含一個來自Lib項目的頭文件jni / lib-jni,h:

#include "lib-jni.h"

在App中的.c文件中。 為了使此#include工作,我相信我需要將Lib的jni /目錄添加到App的jni / Android.mk中的LOCAL_C_INCLUDES中。 我不想對這個路徑進行硬編碼,如果可能的話,我想從Eclipse獲得它。 畢竟,我已經告訴Eclipse,App項目取決於Lib項目,並且Eclipse知道如何在兩者之間連接Java調用。

我通過將lib-jni.h從Lib的jni /目錄復制到App的jni /目錄中來暫時解決了第一個問題。 現在,App的C代碼可以編譯,但不會鏈接; 它得到一個未定義的。 在App的Android.mk中,我需要告訴C鏈接器針對libLib.so進行鏈接。 我試圖把-llib上LOCAL_LDLIBS ,但沒有奏效。 libLib.so在Lib/libs/armeabi/libLib.so的Lib項目中。 Eclipse知道將此.so合並到為App構建的.apk文件中。

有沒有辦法徹底解決這兩個問題?

  1. 將Lib的jni /目錄添加到App的LOCAL_C_INCLUDES
  2. 將libLIb.so的引用添加到App的LOCAL_LDLIBS

我用可能的解決方案來表達這些問題。 我願意接受任何解決方案。 例如,如果使用LOCAL_LDLIBS的方法錯誤,那么正確的方法是什么?

注意 :因為App和Lib是在不同時間構建的兩個單獨的Eclipse項目,所以我很確定我不能在Lib的Android.mk中使用LOCAL_EXPORT_C_INCLUDES來使Lib的jni /目錄可用於App的Anroid.mk-我嘗試了它沒有用。 但是我准備接受教育。

我總是將LOCAL_C_INCLUDES設置為原始庫,因此我認為這不是一個壞主意。 另一種解決方案是將外部庫作為靜態庫包含在您的libs文件夾中,但是我不確定是否可以使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM