在 Android MarshMallow 上仅替换 Framework.jar 及其相关库

2024-02-06

有人知道在 Android Marshmallow 设备上替换 Frameworks.jar 和相关库的步骤吗?

我的工作是修改 Android Marshmallow 框架源代码,进行完整构建然后更新到设备然后验证结果。每次大约需要1.2小时。

做1、2、3次还好,但实际上如果我的修改不起作用,我什至要重复100次。但我只修改了frameworks/中的一小段代码,所以我认为如果我可以在Android代码中仅重建frameworks/模块并仅替换设备中的frameworks/部分,这会节省我很多时间。

我知道如何使用mmm仅重建框架/模块。但我不知道如何替换设备中的框架/部分,因为仅替换frameworks.jar 在棉花糖情况下不起作用。


假设您正在修改以下内容frameworks/base/ https://android.googlesource.com/platform/frameworks/base/+/marshmallow-release,因为它在哪里framework.jar来自,我使用的步骤是:

  1. 如果您已经有完整的版本,请使用mm在您要修改任何代码的目录中执行命令。它比mmm因为它不会再次编译框架依赖项。

  2. Go to <aosp-root>/out/target/product/<product-name>/system/framework/目录并获取framework.jar and services.jar items.

  3. Go to <aosp-root>/out/target/product/<product-name>/system/lib/目录并获取任何libandroid*.so file.

  4. 设备已经 root 后,adb push *.jar /system/framework/.

  5. adb push *.so /system/lib/.

  6. 将设备恢复出厂设置并重新启动。

对框架所做的更改现在可能会起作用。如果您的目标设备是 64 位,请将上述目标上的 lib 替换为 lib64。

解释

上述步骤会根据我们在 AOSP 框架内修改的内容而有所不同。以下是每个文件内部内容的快速描述:

  • framework.jar:应用程序可访问的API
  • services.jar:管理器和系统服务的实现位于frameworks/base/services.
  • libandroid*.so:从本机代码 (C/C++) 生成的库,例如位于以下位置的 .cpp 文件frameworks/base/core/jni.

但总的来说,每个Android.mk框架内部将生成至少一个由以下名称命名的输出LOCAL_MODULE变量和模块的类型取决于以下包含指令:

# JAR file
include $(BUILD_JAVA_LIBRARY)

# Library to be used by other modules
include $(BUILD_SHARED_LIBRARY)

# Executables
include $(BUILD_EXECUTABLE)

例如,frameworks/base/cmds https://android.googlesource.com/platform/frameworks/base/+/marshmallow-release/cmds/文件夹为其中的每个项目生成一个 Java 库和一个可执行文件,例如pm通常用于通过 ADB 安装应用程序的命令。无论如何,规则是:Java 库转到/system/framework/, 共享库转到/system/lib/和可执行文件去/system/bin.

更多官方信息关于Android.mk可以被找寻到here https://developer.android.com/ndk/guides/android_mk.html#var,但它并没有涵盖 Android 构建系统使用的所有变量和宏,我从 AOSP 代码本身获取大部分信息。

希望能帮助到你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Android MarshMallow 上仅替换 Framework.jar 及其相关库 的相关文章

  • Java Microsoft Excel API [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • JTable 和 JScrollpane 大小的问题

    我有一个JScrollPane with a JTable在里面 在里面JTable我最初有 3 行 稍后添加行 默认JTable我的 3 行很难看 因为JScrollPane calls getPreferredScrollableVie
  • 如何使用应用程序接口将蓝牙套接字传递给另一个活动

    因此 根据我收集的信息 套接字连接既不可序列化 也不可分割 但我需要将蓝牙连接传递给另一个活动 我不想作为中间人编写服务 所以请不要将此作为解决方案发布 我听说有一种方法可以使用自定义应用程序接口来传递这些类型的对象 但我一生都找不到这样的
  • 如何在 Eclipse 中使用其他外部 jar 依赖项创建不可运行/不可执行的 jar

    我无法通过 Eclipse 导出向导创建普通的 jar 不可运行 不可执行 它仅创建 jar 文件 但不会导出依赖的 jar 从而在从其他类调用导出的 jar 的方法时出现错误 请帮助 非常感谢 kurellajunior的建议 它是通过使
  • Android 中的列表视图分页

    我有一个列表视图 其中显示了 50 个元素 我决定对视图进行分页 以便视图的每个部分都有 10 个元素 然后单击 下一个 按钮以获取下一个 10 个元素 如何设置10个数据 我关注这篇文章http rakhi577 wordpress co
  • 在 Java 中将弯音发送到 MIDI 音序器

    我了解启动和运行 MIDI 音序器的基础知识 并且希望能够在播放过程中增加 减小序列的音高 但弯音是发送到合成器而不是音序器的消息 我尝试将音序器的接收器设置为合成器的发射器 当我发送弯音短消息时 音序器保持相同的音调 但随后合成器以新的弯
  • SDK >=26 仍需要 mipmap/ic_launcher.png?

    在 Android 中 有两种指定启动器图标 可以说是应用程序图标 的方法 老 方式 在 mipmap 文件夹中指定不同的 png 文件 通常命名为 ic launcher png 但可以通过以下方式设置名称android icon mip
  • 是否可以使用 CardView 为浮动操作按钮制作阴影?

    I know CardView不是为此而设计的 但理论上如果cardCornerRadius view size 2它应该导致圆圈 我错过了什么吗 绘制真实的动画阴影并不困难 您可以尝试在 Froyo 等任何 Android 设备上实现 L
  • 如何找到被点击的JLabel并从中显示ImageIcon?

    这是我的代码 我想知道哪个l单击 然后在新框架中显示该 ImageIcon e getSource 不起作用 final JFrame shirts new JFrame T shirts JPanel panel new JPanel n
  • 如何构建自定义摄像机应用程序?

    我正在尝试开发一个自定义摄像机录像机 当我的设备在 Activity 的 beginRecording 中执行 start MediaRecorder 方法时 应用程序崩溃 我不知道出了什么问题 因为我遵循谷歌API指南 http deve
  • 改变for循环的顺序?

    我遇到一种情况 我需要根据用户输入以不同的顺序循环遍历 xyz 坐标 所以我是 3D 空间中的一个区域 然后是一组像这样的 for 循环 for int x 0 x lt build getWidth x for int y 0 y lt
  • 使用 secp256r1 曲线和 SHA256 算法生成 ECDSA 签名 - BouncyCastle

    我正在尝试使用带有 secp256r1 曲线 P256 的 ECDSA 和用于消息哈希的 SHA256 算法生成签名 我也在使用 Bouncy Castle 库 下面的代码 public class MyTest param args pu
  • 警告:无法更改每个人的权限:

    当运行 Java 快速入门示例时https developers google com drive web quickstart java hl hu https developers google com drive web quicks
  • 使用 DataBindingComponent 的 Inflate 方法

    当 Glide 成功渲染图像后 我在更新文本视图时看到此错误 致命异常 java lang IllegalStateException 必需 CustomBinding 类中的 DataBindingComponent 为 null 绑定适
  • 防止Java实例化的正确方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何正确编写AttributeSet的XML?

    我想创建一个面板适用于 Android 平台的其他小部件 http code google com p android misc widgets 在运行时 XmlPullParser parser getResources getXml R
  • 为什么应该首选 Java 类的接口?

    PMD https pmd github io 将举报以下违规行为 ArrayList list new ArrayList 违规行为是 避免使用 ArrayList 等实现类型 而是使用接口 以下行将纠正违规行为 List list ne
  • 为什么带处理程序的连续自动对焦相机不允许切换相机闪光灯?

    到目前为止我所做的 我已经实现了用于读取二维码的自定义相机 需要继续聚焦相机以获得更好的二维码读取 我的问题当我使用处理程序每 秒聚焦一次时 相机闪光灯开 关按钮不起作用 或者打开和关闭相机闪光灯需要太多时间 当我删除每秒自动对焦相机的代码
  • 我应该如何在 Android 上使用 Retrofit 处理“无互联网连接”

    我想处理没有互联网连接的情况 通常我会运行 ConnectivityManager cm ConnectivityManager context getSystemService Context CONNECTIVITY SERVICE N
  • 将焦距(以毫米为单位)转换为像素 - Android

    在 Android 中 我当前正在访问camera s焦距通过使用getFocalLength in Camera1 Camera2不是一个选择 我正在尝试完全填充当前的计算 focal length pix focal length m

随机推荐