【问题标题】:Compiling a library in C for Android在 C 中为 Android 编译一个库
【发布时间】:2012-07-23 01:55:37
【问题描述】:

我已经安装了 SDK、NDK、JDK 和 Cygwin。我想知道我是否需要编辑库的代码以使它们为 Android(armv7) 编译。

我基本上需要为 Android 移植各种 C 应用程序,但它们都依赖于 PCRE、OpenSSL 等 3rd 方库。我的经验告诉我,PCRE 在 Windows 上编译没有错误,但我们在这里谈论的是 Android(运行 Linux 内核)。

我是否需要为库中的每个函数编写一个 C 包装器以满足 JNI 调用约定?

【问题讨论】:

  • 只有那些你将从 Java 调用的函数才需要包装器。由于您要移植 C 应用程序,因此您不需要很多包装器。
  • 但正如我所说,移植一个应用程序需要在 ARM 架构上为 Linux 编译所需的库。

标签: android c android-ndk


【解决方案1】:

Android NDK 将编译标准 C 语法,但 Android 没有与桌面相同的 C stdlib 库;相反,它有自己的替代方案,称为仿生。有时当您编译大型项目时,您会遇到仿生不支持的 stdlib 函数调用,您必须采取一些小变通方法。

有时流行的库具有现有的 JNI 包装器,否则您必须为应用程序调用的函数进行 JNI 调用。

【讨论】:

    猜你喜欢
    • 2017-07-14
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 2020-11-09
    • 2018-06-08
    相关资源
    最近更新 更多