我希望将版本 3.1(Honeycomb)中引入的 Android RTP API 反向移植到早期版本。我下载了 4.0 版本的源代码,发现这些 API 既有 java 又有原生代码。为了使用 NDK 构建本机代码,需要某些共享库。
根据 Android.mk 文件,它们是libnativehelper
、libcutils
、libutils
和libmedia
。尽管所有这些的源代码都存在于源代码中,但构建它们却很困难。每个都需要许多其他共享库。例如,libmedia
需要这些共享库:libui
, libcutils
, libutils
, libbinder
, libsonivox
, libicuuc
, libexpat
, libcamera_client
, libstagefright_foundation
,libgui
和 libdl
.
所以我的问题是,有没有办法获得原来的 4 个共享库?它是否涉及构建整个源?
问问题
2227 次
3 回答
3
假设我需要构建一段将使用标准 Android 共享库(例如libutils
、libcutlis
、libmedia
. 我将执行以下步骤:
AOSP
使用目标版本安装存储库。- 将我的源代码添加到
./frameworks/base
.
在您的情况下,创建一个单独的文件夹并正确放置可能会更容易Android.mk
。 - 如果这些标准共享库中所需的函数在以前的版本中不存在,您可能会遇到编译错误。
- 当您将代码构建为其中的一部分时
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 回答