如何在android studio项目中包含共享库?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在android studio项目中包含共享库?相关的知识,希望对你有一定的参考价值。

我想在android工作室项目中使用ARToolKit库。这个库使用NDK共享库,所以我按照this指南将它包含在我的项目中。我也尝试过this问题的解决方案。

我不认为这个问题特定于ARToolKit库,而是我误解了NDK共享库的用法。

我的共享库模块的Android.mk文件如下所示(遵循上面引用的问题):

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE    := artoolkit
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libc++_shared.so
include $(PREBUILT_SHARED_LIBRARY)

或者像这样,分别(按照上面提到的指南):

LOCAL_PATH := /Users/balance/SDKs/ARToolKit5

include $(CLEAR_VARS)
LOCAL_MODULE := artoolkit
LOCAL_SRC_FILES := android/libs/$(TARGET_ARCH_ABI)/libc++_shared.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)

对于.aar模块:

include $(CLEAR_VARS)
LOCAL_MODULE := aRBaseLib-release
LOCAL_SHARED_LIBRARIES := artoolkit
include $(BUILD_SHARED_LIBRARY)

我已将共享库模块添加为.aar模块的依赖项,从而在aRBaseLib-release中生成此代码:

configurations.maybeCreate("default")
artifacts.add("default", file('aRBaseLib-release.aar'))
dependencies {
    implementation project(':artoolkit')
}

但是在尝试构建项目时,我收到以下错误:

Gradle sync failed: Could not find method implementation() for arguments [project ':artoolkit'] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

我意识到这些片段可能不是那么有用,所以我当然准备重新开始你的指导,并从那里发布新的错误消息。

任何想法将得到赞赏和尝试。

答案

我终于找到了解决方案here.so文件必须位于<project>/app/src/main/jniLibs/才能包含在.apk中。之前,我已将它们放入libs文件夹中。

另一答案

您可以包含将它们定位在app文件夹内的libs文件夹中的库。

以上是关于如何在android studio项目中包含共享库?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android Studio 中包含 *.so 库?

如何在 Visual Studio C++ 的 dll 项目中包含一个库

在 Microsoft Visual Studio 2015 的 C++ 项目中包含 Armadillo C++ 库

在android studio的apk中包含.so库[重复]

Qt:如何告诉 Qmake 在 Visual Studio 项目中包含 ws2_32

[在Android Studio中,构建一个Android Wear项目,如何在两个模块中包含相同的文件