Android15之解决:Dex checksum does not match for dex:services.jar问题(二百三十五)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者

新书发布:《Android系统多媒体进阶实战》🚀
优质专栏:Audio工程师进阶系列原创干货持续更新中...... 】🚀
优质专栏:多媒体系统工程师系列原创干货持续更新中...... 】🚀
优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
更多原创,欢迎关注:Android系统攻城狮

🍉🍉🍉文章目录🍉🍉🍉

🌻1.前言

本篇目的:Android15之解决:Dex checksum does not match for dex:services.jar问题

  • 具体报错:

    E/zygote64( 2702): Dex checksum does not match for dex: /system/framework/services.jar.Expected: 282363620, actual: 1784922611

🌻2.services.jar介绍

services.jar是Android系统中的一个重要Java归档文件(JAR),它位于Android操作系统的/system/framework/目录下。这个JAR文件包含了一系列服务和框架API,这些服务和API是Android系统运行的核心组成部分,它们为Android应用和系统本身提供了底层的功能支持。

services.jar中封装了Android平台提供的一些关键服务,例如,窗口管理服务(WindowManagerService)、活动管理服务(ActivityManagerService)、通知管理服务(NotificationManagerService)等。这些服务通常以系统服务的形式运行在Android系统的System Server进程中,为上层应用提供稳定可靠的服务接口。

以下是services.jar中包含的一些关键服务和功能:

  1. 窗口管理服务(WindowManagerService):负责管理所有应用窗口的显示和交互。它处理窗口的创建、大小调整、层叠顺序等操作,并确保用户界面流畅运行。
  2. 活动管理服务(ActivityManagerService):负责管理应用程序的生命周期,包括应用的启动、切换、终止等。它还负责进程和内存管理,确保系统资源得到合理分配。
  3. 通知管理服务(NotificationManagerService):负责处理系统的通知消息。应用可以通过这个服务向用户发送通知,如状态栏通知、声音、震动等。
  4. 内容提供者服务(ContentProvider):提供了一种在应用程序间共享数据的机制。通过内容提供者,应用可以读取和修改其他应用的数据,如联系人信息、媒体库等。
  5. 输入管理服务(InputMethodManager):负责处理输入事件,特别是与软键盘相关的输入。它管理软键盘的显示、隐藏以及输入法的切换。
  • services.jar还包含了其他许多服务和API,如电源管理、账户管理、搜索服务、壁纸服务等。这些服务和API为开发者提供了丰富的功能,使得他们能够开发出功能丰富、交互性强的Android应用。
  • 由于services.jar属于Android系统的内部实现,普通开发者通常不会直接与其交互。相反,开发者通常会通过Android SDK提供的公共API来使用这些服务。这些公共API是对services.jar中服务的封装和抽象,使得开发者能够在不了解底层实现细节的情况下使用这些服务。
  • services.jar的重要性体现在它是Android系统服务的中枢,几乎所有的系统级别操作和应用间的交互都依赖于它提供的功能。因此,对于理解Android系统架构和深入开发Android应用的开发者来说,了解services.jar的作用和内容是非常有价值的。

🌻3.解决方案

🐓3.1 修改一:

  • build/make/core/tasks/dex_preopt_check.mk
cpp 复制代码
+ DISABLE_DEXPREOPT_CHECK := true
ifneq (true,$(DISABLE_DEXPREOPT_CHECK))
  # Skip the check if the system server is not installed for the product.
  ifneq (,$(filter services,$(PRODUCT_PACKAGES)))
    $(call maybe-print-list-and-error,\
      $(filter-out $(ALL_DEFAULT_INSTALLED_MODULES),$(DEXPREOPT_SYSTEMSERVER_ARTIFACTS)),\
      Missing compilation artifacts. Dexpreopting is not working for some system server jars. See \
      https://cs.android.com/android/platform/superproject/+/master:build/make/core/tasks/README.dex_preopt_check.md \
    )
  endif
endif

🐓3.2 修改二:

  • frameworks/base/services/Android.bp
cpp 复制代码
java_library {
    name: "services",
+ 	enforce_uses_libs: false,
+     dex_preopt: {
+         enabled: false,
+     },
}
  • Android.mk写法
cpp 复制代码
LOCAL_ENFORCE_USES_LIBRARIES := false
LOCAL_DEX_PREOPT := false

🐓3.3 编译

cpp 复制代码
# make services -j20
相关推荐
键来大师4 天前
Android16 RK3576 系统清理缓存
android·缓存·framework·rk3588·android15
键来大师7 天前
Android15 安装APK时监听且替换安装
android·framework·rk3588·android15
唯鹿6 个月前
Android 15 变更及适配攻略
android·android15
科技道人6 个月前
Android15 launcher3
android·launcher3·android15·hotseat
JabamiLight9 个月前
Lineageos 22.1(Android 15)实现负一屏
android·android15·lineageos 22.1·负一屏
Android系统攻城狮1 年前
Android15之解决:Dex checksum does not match for dex:framework.jar问题(二百三十九)
java·android15·mismatch·framework.jar·dex checksum
TechMerger2 年前
启动信息全掌握,Android 15 重磅 API:ApplicationStartInfo
android·kotlin·osv·android15