5

我手机上的股票 rom 与 MVNO(移动虚拟网络运营商)存在问题。基本上这意味着我的数据连接仅在漫游时有效。这是一个已经在几个 rom 上修复的已知问题(但不是我的)。

为了解决这个问题,我想修改 framework.jar 文件(/system/framework/framework.jar)的源代码,更具体的文件:/com/android/internal/telephony/gsm/GsmServiceStateTracker.java

首先,我将列出我所采取的步骤,以向您展示我目前陷入的困境:我已经完全去除了我的股票 rom,包括 /system/framework/ 和 /system/app 中的 JAR 文件和 APK 文件

  • 我已经下载了 deodexed framework.jar 文件并从中提取了 classes.dex 文件
  • 我已经使用 baksmali 反编译了 classes.dex 文件,最终得到了几个 *.class 文件
  • 我已使用dex2jar将这些 *.class 文件转换为 .jar 文件
  • 我已经使用jdqui解压打开了这个 jar 文件,最终得到了几个 *.java 文件

这就是我卡住的地方,我需要弄清楚如何编辑我想要的 java 文件,并再次得到一个可以上传到手机的工作 framework.jar。

我这样做是错误的吗?还有其他方法可以解决我的问题吗?我希望能得到有这方面经验的人的帮助...

4

3 回答 3

1

我还采用相同的方法来获取与网络相关的参数,例如;BAND, BCCH 等。将framework.jar 反编译后得到*.class 文件后,您可以使用Java DCompiler 或JDclipse 将.class 文件转换为.java 文件。现在根据您的要求修改java文件。

我修改了 RIL.java,但我坚持重新打包。我无法将 RIL.java 转换为 RIL.class。它有很多依赖/导入框架的隐藏文件。参考: http: //www.mailinglistarchive.com/html/android-platform@googlegroups.com/2010-02/msg00325.html

Android 绅士们,如果我们走错路了,请多指教……

于 2012-12-28T09:51:59.330 回答
1

如果您想进行修改,您将不想在 Java 级别进行修改。您可以反编译成 Java 以大致了解发生了什么,但您需要直接修改 Smali。

修改 Smali 后,您可以使用以下命令进行重建:

smali -o classes.dex frameworkSmaliDirectory

然后,将更新的 classes.dex 添加回 framework.jar。在 Linux 上,这很简单:

zip framework.jar classes.dex

最后,重新挂载 /system 读写,并将更新的 framework.jar 推送到设备:

adb shell mount -o rw,remount /system
adb push framework.jar /system/framework/

现在交叉手指,希望你没有破坏任何东西。

于 2014-04-22T23:55:35.260 回答
0

你可以试试apktool。这是一个例子,让我们查看问答“我如何自己手动制作补丁?”

于 2013-02-15T09:56:39.917 回答