4

我希望将版本 3.1(Honeycomb)中引入的 Android RTP API 反向移植到早期版本。我下载了 4.0 版本的源代码,发现这些 API 既有 java 又有原生代码。为了使用 NDK 构建本机代码,需要某些共享库。
根据 Android.mk 文件,它们是libnativehelperlibcutilslibutilslibmedia。尽管所有这些的源代码都存在于源代码中,但构建它们却很困难。每个都需要许多其他共享库。例如,libmedia需要这些共享库:libui, libcutils, libutils, libbinder, libsonivox, libicuuc, libexpat, libcamera_client, libstagefright_foundation,libguilibdl.

所以我的问题是,有没有办法获得原来的 4 个共享库?它是否涉及构建整个源?

4

3 回答 3

3

假设我需要构建一段将使用标准 Android 共享库(例如libutilslibcutlislibmedia. 我将执行以下步骤:

  1. AOSP使用目标版本安装存储库。
  2. 将我的源代码添加到./frameworks/base.
    在您的情况下,创建一个单独的文件夹并正确放置可能会更容易Android.mk
  3. 如果这些标准共享库中所需的函数在以前的版本中不存在,您可能会遇到编译错误。
  4. 当您将代码构建为其中的一部分时AOSP,它将构建所需的库并自动为您链接它们。

PS 要做到这一点,您最好使用基于 Linux 的构建主机。

于 2012-05-30T08:28:41.367 回答
0

使用 cygwin 终端,构建本机部分,即 jni 文件夹。要使用 cygwin 构建,请使用 cygdrive 命令转到 jni 文件夹。然后键入 ndk-build。成功完成后,将在 libs 文件夹中创建共享库,即 .so 文件。

于 2012-05-29T12:07:16.940 回答
0

我可以理解您的问题,您可以从设备或模拟器的 /system/lib 中提取库。但是你需要一个系统权限。但是您可以通过安装应用程序来做到这一点。否则在 linux 平台上构建你的源代码。构建过程非常简单,只需使用 2 或 3 个命令。第一次需要很长时间来构建。之后你需要很短的时间来构建,它只会根据修改代码的时间戳来构建。 请看这里

于 2012-06-01T07:33:57.140 回答