【问题标题】:Libraries available on Android NDK?Android NDK 上可用的库?
【发布时间】:2011-07-12 07:03:18
【问题描述】:

Android NDK 中是否有默认可用的库?如果没有,我可以使用任何 c++/c 库吗,只要我自己包含它?

特别是,我需要压缩、加密、正则表达式和 sqlite。我正在考虑使用zlibcrypto++sqlite(duh!) 和boost,但如果它已经可用,可以使用其他任何东西。

另外,如果没有内置可用的东西,你会推荐除我上述选择之外的其他东西吗(如果可能,我更喜欢公共域,或者 BSD 或类似的)

【问题讨论】:

  • 为什么需要 NDK 的所有功能?例如,如果您打算使用 SQLite,那么与从 Java 访问 SQLite 相比,您不太可能获得任何明显的性能提升。阅读"When to Develop in Native Code" 了解有关这一点的更多信息。
  • @Ted-Hopp 这是一个可以在多个平台上运行的应用程序,(目前是windows和android,希望以后有更多)。该应用程序的主要引擎是c++,所以我不需要为每个平台重写它。引擎将数据存储在 SQLite 表中。

标签: android c++ c android-ndk


【解决方案1】:
  • SQLite 可通过 Java 中的抽象 database access 在 Android 上使用。 ‍.so 本身是私有的。如果您需要修改,您当然可以编译自己的 SQLite 库,但通常您应该从 Java 访问它。我这样做是为了加密。
  • zlib 可供 NDK 使用
  • crypto++ 当然可以通过 NDK 编译
  • Boost 确实适用于 Android/NDK(我目前正在大量使用它)

【讨论】:

  • 使用 boost 正则表达式给我的.apk 增加了多少?你会推荐一个不同的吗?
  • 我不能肯定地说,因为我使用的比 Boost 多得多。但是,我想单独的正则表达式很小。
【解决方案2】:

默认情况下,Android NDK 会提供一些库,即所谓的“稳定原生 API”(http://developer.android.com/sdk/ndk/overview.html):

  • libc(C 库)头文件
  • libm(数学库)标题
  • JNI 接口头
  • libz(Zlib 压缩)标头
  • liblog(Android 日志记录)标头
  • OpenGL ES 1.1 和 OpenGL ES 2.0(3D 图形库)头文件
  • libjnigraphics(像素缓冲区访问)标头(适用于 Android 2.2 及更高版本)。
  • 用于 C++ 支持的最小标头集
  • OpenSL ES 原生音频库 Android 原生应用 API

【讨论】:

    【解决方案3】:

    首先,我认为您需要从这里下载 NDK 包:http://developer.android.com/sdk/ndk/index.html 并查看包中的文档。我相信你会得到大部分问题的答案。 并快速回答您的问题。是的,Android NDK 中默认有库。例如标准 C 和 C++ 库。

    【讨论】:

    • 我现在介绍标准库。我问的是标准库不包含的功能。
    • 还有其他库,在提到的文档中你可以找到它们的描述。
    • 有哪些标准的 c 和 c++ 库可用?原因文档中的第一句话指出:“Android 平台提供了一个非常小的 C++ 运行时支持库 (libstdc++)。这个最小的支持不包括,例如:标准 C++ 库支持(除了一些琐碎的头文件)、C++ 异常支持、RTTI支持”
    【解决方案4】:

    这只是关于 Crypto++ 的部分答案......

    Crypto++ 有一个 wiki 页面,其中包含来自Android (Command Line) 命令行的构建说明。该过程将创建各种库并向您展示如何构建cryptest.exe 以验证设备上的库。但是您仍然需要使用 Android 的构建系统来创建您的包装项目。

    Piotr Morgwai Kotarbiński 有一个关于使用 Android 修改后的构建系统构建 Crypto++ 库的页面。见Building Crypto++ with NDK toolchain。我不相信 Piotr 的文章可以验证设备上的库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-09
      • 2018-02-20
      • 1970-01-01
      • 2015-11-10
      相关资源
      最近更新 更多