[英]NDK - Include a Prebuilt library and call a native function in Android Project
[英]How to Import a prebuilt *.so library and call it from the new project?
我目前正在開發一個將使用預構建共享庫的項目。 但是我對導入預構建庫的過程以及從新項目java類調用預構建中的方法感到非常困惑。
讓我們說:
項目 A 為每個 ABI_ARCH 生成了 libA.so 文件。
我正在嘗試在我的項目 B 中使用它們。
導入它們的正確方法是什么,以及如何調用在 A 中聲明的 libA.so 的方法。換句話說,如何使用 libA.so 的公開 API?
最近,Google 預先發布了一項新功能,可以輕松重用預先構建的本機庫。 如果您還沒有准備好跳轉到 Android Studio 4.0,和/或為libA構建必要的AAR ,您可以使用舊方法。
根據您的項目 B的性質,有三個不同的軌道。
如果它只從 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,並保持其完全限定名稱不變。
如果第二個項目使用ndk-build ,則應include $(PREBUILT_SHARED_LIBRARY)
。 NDK指南包含更多最新的詳細信息。
如果項目使用CMake ,則使用add_library(… SHARED IMPORTED)
。 Android Srudio 文檔解釋了不同的場景。
重要的是要強調ndk-build和CMake在處理預構建.so
庫方面的細微差別。 雖然ndk-build會將這些庫與它構建的所有庫一起復制到安裝目錄,但CMake不提供此幫助。 因此,您可能會將包含預構建庫的文件夾添加到jniLibs.src
中的jniLibs.src (如上面的情況 1)。
在所有 3 種情況下,請確保您打包到 APK 或 AAB 中的庫沒有調試符號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.