android - 一般 : Howto change Android core API classes?

标签 android api operating-system patch

这只是一个一般性问题,供我引用。我知道如何创建标准的 Android 应用程序,但我想知道:这怎么可能/人们如何增强 Android 核心功能并深入挖掘系统?

例如: 假设我想改编 DownloadManager类,它被许多应用程序使用。因此,例如,可以调整类,以便以某种方式更改下载进度下通知栏中显示的下载文本。

请原谅我提出以下愚蠢的问题,但我对这些高级主题一无所知,这就是我在这里问的原因;-)

  • 可以更改(例如)DownloadManager 类,使其具有扩展功能,然后供第 3 方应用程序使用,对吧?
  • 然后可以将修补后的类放入 Play 商店供其他人下载/扩展他们的 DownloadManager 功能吗?
  • 人们需要 Root 才能安装这样的更改吗?
  • 最重要的是:某人如何更改 Android API 类?我在这里真的是个菜鸟:我不知道从哪里获得源代码,如何用增强类替换标准,需要什么,等等。是否有像这样的高级主题的教程?

请多多指教:-)

最佳答案

is possible to change (for example) the DownloadManager class, so that it has extended functionality which will then be used by 3rd party apps.

是的,当然,Android 源代码是在 Apache 许可下开放的,您可以修改此源代码,并公开发布到世界上。关于DownloadManager 类和许多其他类的一些细节,在Android OS 结构中,这些类是在上层编程的,通常完全用Java 编写。

Can the patched class then be put in the Play Store for other people to download/extend their DownloadManager functionality?

我不太明白你的问题。在 Play 商店(和另一个 android 应用商店)中,人们上传他们的应用(用有趣的一句话,上传源代码已经编译),那么你如何上传源代码供用户扩展他们的应用程序?

你可以把你的源代码公开到github,或者其他程序员经常见面的地方,这样他们就可以查看你的源代码,并经常给你提出宝贵的意见和意见:)

Will people need Root to be able to install such a change?

如果是高级用户,他们可以为他们的设备安装新的 Android 操作系统。但我认为,这个答案比你真正需要的更进一步。

Where to get the source-code from, how to replace the standard with the enhanced class, what's needed for that, etc. Is there even a tutorial on advanced topics like this?

在Android SDK 文件夹下,有一个名为“Source”的文件夹,你可以去那里看到很多Android 源代码。您可以接受、阅读和修改您想要的内容。 Android 的某些部分不在这里,你应该谷歌一下,在互联网上很容易找到。

但是你应该记住,当你修改了这个类或那个类,它不再属于Android操作系统,你必须将这个类文件作为普通类导入到你的项目中。

所以,如果你想修改基本的 Android API:那些 API 通常都是用 Java 编写的,你仔细阅读并理解它们,如果你想修改一些部分,然后将这个类导入你的项目。

最后,为什么你应该这样做 :) 因为你可以扩展你想要的类,并为这个类添加一些额外的特性。它更容易、更好。

希望这有帮助:)

关于android - 一般 : Howto change Android core API classes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13876810/

相关文章:

c - (在C 中模拟UNIX SHELL)如何在for 循环中实现多个管道?

c - 进程终止不影响 waitpid()

database - 您将如何构建数据库文件系统 (DBFS)?

android - onEndReachedThreshold 在 react-native 中的真正含义

android - 如何为整个应用程序自定义主题

arrays - 如何在 Node Express api 中接受不同的 xml 格式?

java - NotificationCompat.Builder 中的 setLargeIcon() 不起作用

java - 使用Eclipse时可以安装2个或更多Android SDK吗

android - 在服务中注册接收者

Python API 包装设计模式