如何将外部java库添加到自定义Android框架?

时间:2011-11-15 20:19:36

标签: android-source android-framework

有人可以告诉我如何将外部java框架包含到android框架中并将其编译为自定义android框架的一部分吗?

这个想法是让这个外部框架成为我自定义android框架的一部分,并将其作为android服务公开,供其他进程使用。

实质上我所做的是 -

  1. 检查了java框架的android端口
  2. 将src目录(包括所有外部jar文件)从移植的框架复制到framework/base/core/java/android/
  3. 在框架中编辑ActivityManager以调用复制的库
  4. run make
  5. 这是编辑Android框架的正确方法吗?因为,我在Android框架中包含了java文件和外部项目的相关外部jar,我怀疑在将jar转换为dex时失败。

    有人可以指出我处理Android Framework内部的任何可用资源以及如何编辑Android框架吗?

    我在今年在中国北京举办的Marko Gargenta演讲中检查了youtube上的Tutorial: Android Internals - Building a Custom ROM, Pt. 2 of 2。但他没有明确表示(即添加外部框架或罐子)。

2 个答案:

答案 0 :(得分:4)

首先:我在Android构建过程中不是很有经验,所以可能有一个更好的解决方案,但这个应该有效(至少对于Android 2.2)。

我假设您使用Eclipse进行源代码修改并已经成功执行make -j4 ...

  • 创建新的源文件夹:external/<your-library>/src
  • 将所有Java源文件复制到此文件夹中。
  • 打开以下make文件:<android>/frameworks/base/Android.mk
  • 搜索# Build ext.jar并按如下方式添加您的资料库:

    [...]
    ext_dirs := \
        ../../external/apache-http/src \
        ../../external/<your-library>/src \
        ../../external/gdata/src \
        ../../external/protobuf/src \
        ../../external/tagsoup/src
    [...]
    
  • 现在您应该能够从Android框架中访问这些库...
  • 最后执行make -j4 ext以仅构建外部模块
  • make -j4构建所有已更改的文件(如果/out/中存在先前的版本)。

答案 1 :(得分:1)

来自README.txt中git repo的

https://android.googlesource.com/platform/vendor/sample就是一个很好的例子。克隆它以查看示例是很好的。

基本上你需要创建jar文件并将其添加到文件系统中,将xml配置添加到/system/etc/permissions/并在apk <uses-library>中声明AndroidManifest.xml

就我而言,我在错误的地方(而不是<uses-library>)添加<application>时遇到了问题。

所以最好用以下方法检查结果:

$ aapt dump badging Foo.apk | grep uses-library
uses-library:'android.foo'