android - 修改 android.jar 类并在 Android 设备中替换它?

标签 android android-widget dex

我下载了Android SDK的源代码并修改了类android.widget.TextView。

现在,我正在尝试弄清楚如何用修改后的 TextView 替换我的设备上运行的实际 TextView。

我发现编译的类位于我手机上的/system/framework中。

有关如何替换适当的 jar 和 odex 文件的任何指示吗?

注意:我还在谷歌小组中读到,修改 Android 的位和 block 是行不通的,我们需要构建整个源代码。

最佳答案

I also read in google groups that modifying bits-n-pieces of android will not work, we need to build entire source code.

如果您只想更改几行,则无需重建整个系统。基本上,您需要可以使用 adbapktoolsmali 提取(和推送!!)文件的手机,具体取决于您的用途计划更改、资源或代码。

如果是资源(本地化、翻译):

  1. 从手机中提取framework-res.jar,使用apktool ifframework-res.jar将其设为默认框架以供将来操作。 每次使用新手机或新版本的 Android 时,都必须拉取并导入框架。

  2. 拉取您要更改的文件。

  3. 使用apktool d反编译该文件。

  4. 进行所需的更改。

  5. 使用apktool b编译新文件。

  6. 压缩并签名。

  7. 将新文件推送到手机。

如果您想更改代码,请使用 framework.jar 而不是 framework-res.jarsmali/backsmali 进行编译/.dex 文件的反编译。

此外,最好对要更改的文件进行备份,以防出现问题。

关于android - 修改 android.jar 类并在 Android 设备中替换它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10591924/

相关文章:

Android - 复选框和文本之间的间距

Android Widget 没有响应

android - 如何防止警报对话框被后退按钮关闭

android - 在 Android 上,单击展开列表并单击按钮?

android - 多 dex 的问题

android - GAServiceManager 类型的 setLocalDispatchPeriod(int) 方法已弃用

android - 如何更新sqlite中的整个列?

android - facebook 在 android 应用程序中的集成

android - 在没有 Gradle 的情况下使用 multiDexEnabled,而是使用 Eclipse 构建过程

android - 错误:任务 ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'的执行失败。无法合并dex