如何将Dex文件重新打包并推回Galaxy S5 Lollipop系统中以支持第三方应用安装?

8次阅读
没有评论

问题描述

为了在不修改官方 ROM 的情况下支持 Xposed 等第三方应用安装,作者试图通过从手机中提取 apppriv-appframework 文件夹并使用 Deodex 工具(如 LBD2.5)进行处理来实现。然而,在尝试将重新打包的文件推回系统中时遇到了一些问题:即使授予了 root 权限,移动或复制这些文件也总是失败,显示“内存不足”的错误信息。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

手动重新打包与推回方法

根据问题描述的情况,作者尝试直接从 SD 卡中恢复 priv-app 文件夹,并删除了移动的失败尝试。但为了更好地完成这一过程,我们建议采用以下步骤:

  1. 准备所需工具:确保拥有 ADB 和 root 授权。

  2. 验证 Deodex 过程是否成功

    • 使用命令行检查 apppriv-appframework 目录下的文件是否存在和正确性。您可以检查这些文件的大小或使用文件管理器(如 ES Explorer)进行确认。
    • 您还可以尝试在其他支持 Deodex 处理的应用中查看结果是否有效,例如使用 OdexDroid。
  3. 处理内存不足的问题

    • 在完成 Deodex 后,如果遇到“内存不足”的问题,增加设备的临时存储或重新启动设备以释放更多可用空间。
    • 尝试在电脑上进行处理和传输,避免直接通过 SD 卡移动大型文件。
  4. 确认并推回系统中的文件

    • 使用 ADB 命令行进行操作:adb push [新文件路径] /system/。例如:
      adb push app/ /system/app/
      adb push priv-app/ /system/priv-app/
      adb push framework/ /system/framework
    • 推回后,重启设备以确保所有更改生效。

方案2

利用第三方工具自动化处理

如果上述步骤不能解决您的问题,您还可以考虑使用自动化脚本来简化过程。下面是一个简单的 bash 脚本示例来帮助管理这些文件的移动和推回:

#!/bin/bash
# 提取必要文件夹
adb pull /system/app app
adb pull /system/priv-app priv-app
adb pull /system/framework framework

# 推送经过处理后的文件夹到设备系统目录中(假设已成功完成 Deodex 处理)
ADB_DEVICE=$1 # 设备名或别名,如果需要
if [ -z "$ADB_DEVICE" ]; then
  ADB_DEVICE=""
fi

adb ${ADB_DEVICE} push app /system/app/
adb ${ADB_DEVICE} push priv-app /system/priv-app/
adb ${ADB_DEVICE} push framework /system/framework/

# 复位缓存分区(例如清空 Dalvik 运行时缓存)
adb ${ADB_DEVICE} shell "pm clear com.android.packageinstaller"

使用该脚本,您可以在终端或命令行工具中执行:

./move_files.sh

小结

通过以上两种方案,您可以尝试解决在 Galaxy S5 Lollipop 上重新打包并推回 Dex 文件以支持 Xposed 等第三方应用安装的问题。如果仍然遇到困难,建议查阅相关论坛或联系社区内的专家进行进一步帮助与学习。希望您能顺利完成改造工作!:)

正文完