簡體   English   中英

如何導入預構建的 *.so 庫並從新項目中調用它?

[英]How to Import a prebuilt *.so library and call it from the new project?

我目前正在開發一個將使用預構建共享庫的項目。 但是我對導入預構建庫的過程以及從新項目java類調用預構建中的方法感到非常困惑。

讓我們說:

  1. 項目 A 為每個 ABI_ARCH 生成了 libA.so 文件。

  2. 我正在嘗試在我的項目 B 中使用它們。

導入它們的正確方法是什么,以及如何調用在 A 中聲明的 libA.so 的方法。換句話說,如何使用 libA.so 的公開 API?

最近,Google 預先發布了一項新功能,可以輕松重用預先構建的本機庫。 如果您還沒有准備好跳轉到 Android Studio 4.0,和/或為libA構建必要的AAR ,您可以使用舊方法。

根據您的項目 B的性質,有三個不同的軌道。

  1. 如果它只從 Java/Kotlin 加載libA.so ,那么在build.gradle 中指定jniLibs.src就足夠了: How can I add .so files to an android library project using gradle 0.7+ 請注意,必須將具有在libA.so中實現的本機方法的所有類復制到項目 B,並保持其完全限定名稱不變。

  2. 如果第二個項目使用ndk-build ,則應include $(PREBUILT_SHARED_LIBRARY) NDK指南包含更多最新的詳細信息。

  3. 如果項目使用CMake ,則使用add_library(… SHARED IMPORTED) Android Srudio 文檔解釋了不同的場景。

重要的是要強調ndk-buildCMake在處理預構建.so庫方面的細微差別。 雖然ndk-build會將這些庫與它構建的所有庫一起復制到安裝目錄,但CMake不提供此幫助 因此,您可能會將包含預構建庫的文件夾添加到jniLibs.src中的jniLibs.src (如上面的情況 1)。

在所有 3 種情況下,請確保您打包到 APK 或 AAB 中的庫沒有調試符號。

暫無
暫無

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

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