2014-04-04 50 views
0

我有一個Android項目,它是一個庫(標有Is庫複選框)和其他需要這些庫的Android項目。庫中有三個.jar包和一個名爲armeabi的文件夾,其中包含7個帶.so擴展名的文件。是否需要安裝NDK才能使用.so庫?

我在Java構建路徑庫選項卡中添加了.jar庫。 但我無法設法將庫添加到需要這些庫的項目中。我想知道是否有任何方法可以在不安裝NDK的情況下添加這些庫。

如果我需要安裝NDK,應該如何繼續添加.so庫?

非常感謝你

你建立(與NDK)

回答

0

您需要的NDK只建.so文件,它什麼也不做的打包。

的.so文件,通常是從.jar文件剝離在Android上,如果你想獲得這些到你的應用程序你需要給自己解壓文件並把它們放在裏面/libs/armeabi//libs/x86/等爲食,/jniLibs/armeabi//jniLibs/x86/等對於Android Studio。

如果要打包庫並在使用時自動集成它的.so文件,可以將其打包爲.aar而不是.jar,並使用gradle:http://tools.android.com/tech-docs/new-build-system/aar-format

的.aar裏面,你的每一個架構.so文件應該往裏走jni/armeabi/jni/x86/

0

圖書館一般都出你的項目庫/ armeabi目錄(我不知道,如果你可以改變這一點)。

但是看到你已經擁有你的.so文件,我認爲如果你手動將它放在libs/armeabi文件夾中是安全的。然後它會自動包裝你的apk。

+1

理論上,這工作,但我很好奇,怎麼一個Android兼容。所以正在構建沒有安裝NDK的庫。 – fadden

+0

@fadden:你不能創建沒有NDK的.so庫,至少不能以任何明智的方式。你爲什麼問這個?我不認爲這與這個問題有關,這是關於*使用*現有的.so文件,而不是*創建*新的問題。至少這就是我對OP的理解:) –

+0

「我有一個Android項目,它是一個庫(標有Is庫複選框)」讓我相信帶有.so文件的項目也是OP構建的項目之一。 – fadden

0

你不需要NDK使用* .so文件,只需要自己創建一個。

如果您需要應用程序的* .so文件,只需將它們放入項目的/libs/armeabi目錄即可。它們將最終放入由Android構建系統創建的APK中。

有一點需要注意的是文件'名稱爲的錯誤/無證行爲。我曾經有一個名字不是以「lib」開頭的* .so文件有一個莫名其妙的問題;它在APK中,但會被設備上的安裝程序忽略。只有當我重命名它會正確安裝。

如果你需要* .so文件爲圖書館,你基本上什麼也不做。 Android庫系統並不是非常複雜,甚至比Java已經在這方面提供的更差(在我看來);沒有辦法創建一個包含在單個文件中的所有東西的Android庫。因此,如果* .jar歸檔中的Java代碼需要* .so文件中的原生函數,那麼您必須將這兩個 * .jar和* .so文件作爲單獨文件發送給您的客戶端。 (當然,客戶端將然後做我在上面解釋了同樣的事情:地方* .so文件,在其應用項目的/libs/armeabi目錄)

相關問題