【问题标题】:How to include shared libraries in android studio project?如何在 android studio 项目中包含共享库?
【发布时间】:2018-06-05 03:44:15
【问题描述】:

我正在尝试在 android studio 项目中使用 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.

我知道这些 sn-ps 可能没有那么有用,所以我当然准备好在您的指导下重新开始,并从那里发布新的错误消息。

任何想法都会受到赞赏和尝试。

【问题讨论】:

    标签: java android java-native-interface shared-libraries artoolkit


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-08-02
      • 2015-01-31
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-05
      • 1970-01-01
      相关资源
      最近更新 更多