2

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

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

本质上我所做的是-

  1. 检查java框架的android端口
  2. 将 src 目录(包括所有外部 jar 文件)从移植的框架复制到framework/base/core/java/android/
  3. 在框架中编辑ActivityManager调用复制的库
  4. 运行制作

这是编辑 Android 框架的正确方法吗?因为,我在 Android 框架内包含了外部项目的 java 文件和关联的外部 jar,我怀疑在将 jar 转换为 dex 时会失败。

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

Tutorial: Android Internals - Building a Custom ROM, Pt. 2 of 2在 youtube 上查看了今年在中国北京举行的 Marko Gargenta 演讲。但他也没有说清楚(即添加外部框架或罐子)。

4

2 回答 2

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/)。
于 2012-01-04T03:20:15.930 回答
1

https://android.googlesource.com/platform/vendor/sample中的git repo 中的README.txt是一个很好的示例。最好克隆它以查看示例。

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

在我的情况下,我在添加<uses-library>错误的地方(不在<application>)时遇到了问题。

因此,最好通过以下方式检查结果:

$ aapt dump badging Foo.apk | grep uses-library
uses-library:'android.foo'
于 2015-01-08T15:15:31.230 回答