从Android源代码构建/查找共享库

时间:2012-05-29 12:02:23

标签: android android-ndk java-native-interface shared-libraries rtp

我希望将3.1版(Honeycomb)中引入的Android RTP API移植到早期版本。我下载了4.0版的源代码,发现这些API同时具有java和本机代码。为了使用NDK构建本机代码,需要某些共享库。
根据Android.mk文件,这些文件是libnativehelperlibcutilslibutilslibmedia。尽管源代码中存在所有这些的来源,但构建它们很困难。每个都需要许多其他共享库。例如,libmedia需要以下共享库:libuilibcutilslibutilslibbinderlibsonivoxlibicuuc,{ {1}},libexpatlibcamera_clientlibstagefright_foundationlibgui

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

3 个答案:

答案 0 :(得分:3)

假设我需要构建一段本地代码,该代码将使用标准的Android共享库,例如libutilslibcutlislibmedia。我会执行以下步骤:

  1. 使用目标版本安装AOSP存储库。
  2. 将我的源代码添加到./frameworks/base下的相应目录中。
    在你的情况下,创建一个单独的文件夹并选择合适的Android.mk当然可能更容易。
  3. 如果先前版本中不存在这些标准共享库中的必需函数,则可能会出现编译错误。
  4. 当您将代码构建为AOSP的一部分时,它将构建所需的库并自动为您链接。
  5. P.S。为了实现这一点,您最好使用基于Linux的构建主机。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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