2012-12-20 92 views
4

我的手機上的我的股票ROM與MVNO(移動虛擬網絡運營商)存在問題。基本上這意味着我的數據連接僅適用於漫遊。這是一個已知的問題,已經在幾個ROM上解決了(但不是在我的)。修改framework.jar中的java代碼

爲了解決這個問題,我想修改framework.jar文件(/system/framework/framework.jar)的來源,更具體的文件:/com/android/internal/telephony/gsm/GsmServiceStateTracker.java

要開始我會列出我不得不採取以顯示你在哪裏我的步驟米停留在momoment: 我已經完全deodexed我的股票ROM,無論是JAR文件和APK文件都/系統/框架/和/

  • 我已經下載了deodexed framework.jar文件系統/應用並從中提取 classes.dex文件
  • 我一直在使用baksmali與 幾個* .class文件落得反編譯classes.dex文件
  • 我已經轉換這些* .class文件使用 dex2jar
  • 我解包打開這個罐子.jar文件使用jdqui文件,結束了 幾個* .java文件

這是我堅持,我需要弄清楚如何編輯Java文件我想,再次結束了一個工作framework.jar我可以上傳到我的手機。

我這樣做是錯誤的嗎?任何其他方式來解決我的問題?我希望從有經驗的人那裏得到一些幫助...

回答

1

我也工作在相同的方法來獲取網絡相關的參數,如; BAND,BCCH等。一旦你在framework.jar反編譯後得到* .class文件,你可以使用Java DCompiler或JDclipse將.class文件轉換成.java文件。現在根據您的要求修改java文件。

我修改了RIL.java,但我堅持重新打包。我無法將RIL.java轉換爲RIL.class。它有很多依賴/導入框架的隱藏文件。 編號:http://www.mailinglistarchive.com/html/[email protected]/2010-02/msg00325.html

Android的男士,請拋出一些燈,如果我們是弄錯了......

0

你可以嘗試apktool。這是一個example,請檢查Q &「我如何自己手動打補丁?」

1

如果您想進行修改,您將會想要在Java級別完成這些修改,您將會在而不是之間進行修改。您可以反編譯爲Java以廣泛理解正在發生的事情,但您需要直接修改Smali。

一旦你已經修改了Smali,可以重建具有:

smali -o classes.dex frameworkSmaliDirectory 

然後,添加更新的classes.dex回framework.jar。在Linux上,這很簡單:

zip framework.jar classes.dex 

最後,重新安裝/系統讀寫和推送更新框架。罐到設備:

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

現在交叉手指,希望你沒有破壞任何東西。

+0

有什麼方法可以編輯Java文件並將框架jar部署到設備?我發現.smali很難理解。 –

+1

不是。像dex2jar和jdgui這樣的反編譯器引入了可能會改變行爲或完全破壞代碼的不忠行爲。對於您從反編譯器中包含的每一行代碼,其改變行爲的風險都會上升。你可以使用反編譯的java,修改它,編譯成一個類,然後使用dx編譯成dex,然後將它拆分爲smali,將修改後的代碼與原始smali結合起來,並從中重建framework.jar。那麼有一個很好的機會破碎了,它不會是明顯的。最好修改smali。 –