如何开始进行Android内核编程?

53

我有6个月的Android经验,开发了一些基于简单UI的应用程序。现在我想编写针对Android核心内核的应用程序。例如,我想开发一个在Android中不存在的框架。要实现这一点,我们必须编写内核代码。我不知道从哪里开始学习Android内核编程。

如果有人知道如何开始,请帮助我。

4个回答

33

提醒一下:链接 http://stackoverflow.com/questions/6613778/downloading-and-importing-android-source-code-to-be-able-to-compile-and-edit 不存在。 - Vivek S.

11
如果你想谈论平台级编程,例如框架扩展、本地库和服务,那么有几个地方可以开始。第一个是新的和更新的官方开源项目页面。关于贡献和移植的部分提供了一些基本信息,介绍了平台架构以及你需要使用平台的内容。下一步是了解平台和框架的构建系统。如果你在谷歌上搜索,可以找到一些有限的信息。最好的方法可能是研究在构建文件夹中可用的一些makefile模板。关于如何使用Android.mk文件添加自己的模块的信息,可以研究现有项目的makefile,例如在开源项目的external文件夹中可用的文件。
一旦你掌握了以上基础知识,也就是说你知道了平台级开发的基本知识以及如何为平台构建自己的模块,下一步是学习在开源项目中可用的框架扩展示例。查看开源项目中的vendor/sample/PlatformLibrary文件夹(编辑,截至2.2版本,供应商材料已经移动到设备文件夹中),阅读readme文件,研究代码,构建并确保你理解它。如果你不理解,则JNI、共享库、平台安全模型和核心框架可能会对你有所帮助。
我猜想你在谈论内核编程时,也在寻找将新硬件与平台连接并使用框架扩展向应用程序公开该功能的方法。硬件基本上作为标准Linux驱动程序添加,因此让它在Linux下工作是一个很好的第一步。之后如何将其连接到Android框架取决于它是什么类型的硬件。您可以使用本机进程来控制它(比较当前平台中的相机服务或无线电守护进程),或者只需在使用您的框架扩展的应用程序中生成一个线程即可。对于不需要太多关注的硬件,使用Android HAL库进行插入也是一种选择。
希望这提供了一些初始指针。官方邮件列表是关于平台级开发的主要信息来源。特别是Android移植Android平台

2
你还应该查看 http://pdk.android.com。我最近才发现这个网站,它非常有用。我希望我早些知道它。我不确定谷歌公司有多么专注于更新该网站,因为正如BMB所提到的,供应商相关内容已经在2.2版本中移动到设备文件夹中,但PDK网站没有更新反映这一点。此外,一些链接无法使用,但我通过在谷歌中进行站点搜索找到了所有页面。

0

开始学习Android编程最好的地方是Google的文档,特别是关于Android内核构建的部分https://source.android.com/docs/core/architecture/kernel。然后是内核构建https://source.android.com/docs/setup/build/building-kernels

Xda并不适合用于内核创建,但对于内核修改和后移植很有用。他们主要提供较新版本的Android系统给旧手机使用,以及修改ROM和更改启动图像中的电池动画。

Google还介绍了如何为现有内核开发新功能。

最好从头开始学习。

个人经验是我先从xda开始学习,然后再倒退回去,这花费了我更长的时间,并且使我的设置过程变得更加复杂。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接