【问题标题】:How to import local c++ shared library .so into Android studio 1.5?如何将本地 c++ 共享库 .so 导入 Android Studio 1.5?
【发布时间】:2016-02-29 01:42:52
【问题描述】:

我有一个简单的问题,但非常具体。

我在一个 c++ 项目(非 android)中构建了一个共享库 .so,我将其用于其他项目。

我现在想用它来开发一个带有 Android NDK 的 Android 应用。在 /app/src/main/jni 文件夹中,我有 cpp 文件,我想使用我的库的功能。这里是.cpp文件的内容

#include <string.h>
#include <jni.h>
#include <mysharedlibrary.h>

jstring
Java_com_example_nativeapp_MyActivity_stringFromJNI( JNIEnv* env,
                                                jobject thiz ) {

      ObjectFromSharedLibrary obj;
      functionFromSharedLibrary(obj);
      ...

}

但我真的不知道该怎么做。我花了最后 2 天寻找答案,但我什么也没找到

这里是我的环境:

  1. 操作系统 Linux Ubuntu 14.04 LTS
  2. Android 工作室 1.5
  3. Gradle 2.8
  4. 我的 .so 位于 /usr/local/lib 中,*.h 位于 /usr/local/include/mysharedlibraryname/ 中

我想知道这是否可能以及如何从头开始正确地做到这一点。

提前致谢

【问题讨论】:

  • 这个链接可能对stackoverflow.com/questions/16705954/…有帮助
  • 您不能在 Android 操作系统上使用来自 /usr/local/lib 的库。这不仅是平台的差异(您的 Linux 运行在 64 位 x86 上,Android 通常是 32 位 ARM v7a)。它也是运行时环境。您通常可以毫不费力地使用 Android 工具链重新编译 Linux 库,但您的里程可能会有所不同。
  • 你找到答案了吗?我有同样的问题
  • 不,我暂时还没有找到任何东西,我还在努力。

标签: android c++ android-studio android-ndk android-gradle-plugin


【解决方案1】:

首先使用 eclipse 构建您的 .so 共享库。现在使用 gradle 0.7.2+ 在 Android Studio 中添加您生成的 *.so 文件。首先在 /app/src/main/ 位置创建 jniLibs,并复制 jniLibs 中所有带有 *.so 文件(armeabi、armeabi-v7a、mips、x86)的文件夹。如图所示Link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 2016-02-10
    • 2015-11-24
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    相关资源
    最近更新 更多