日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

修改framework后重新刷入手机

發布時間:2025/4/16 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 修改framework后重新刷入手机 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊打開鏈接

由于業務需求,需要修改SystemUI,在修改了SystemUI之后出現了各種問題,原本以為只要混滾SystemUI然后重新入到systemUI的根目錄mm一下就行,沒想到刷入到手機沒有任何作用。

經人指點是要把編譯生成的framework-res.apk和framework.jar刪除,然后重新生成,按照我以往邏輯,我只是修改了framework/base目錄下的代碼,只需要在該目錄下mm一下就可以了,想不到沒有任何作用,遂百度之。然后發現必須先編譯res然后編譯java。具體做法如下:

編譯framework

進入項目根目錄 執行mm命令(原生或高通), 編譯 framework-res.apk

cd frameworks/base/core/res/ mm
  • 1
  • 2

編譯完后com.android.internal.R中會生成資源的引用。?
然后在目錄frameworks/base/ 下執行mm 編譯 framework.jar (原生或高通)

cd ../.. mm
  • 1
  • 2

如果 frameworks/base/services 下有修改,則也要編譯?
frameworks/base/services/執行mm 編譯 services.jar

cd services mm
  • 1
  • 2

這樣我們就能在生成的文件里面找到framework.jar和fram-res.apk以及service.jar,接下來就是把這個push到我們得手機上,使用 adb remount命令。?
這個過程中你可能會遇到這樣的錯誤:

adb remount of system failed: Permission denied
  • 1

解決辦法是

adb root
  • 1

然后會提示root進入成功:

* daemon not running. starting it now on port 5037 * * daemon started successfully * restarting adbd as root [fulinux@ubuntu rk3288-5.1]$ adb remount remount succeeded
  • 1
  • 2
  • 3
  • 4
  • 5

接下來執行push指令:

adb remountadb push framework-res.apk /system/framework/adb push framework.jar /system/framework/adb push services.jar /system/framework/ (如果有修改的話)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

push成功之后,重啟手機,使用

adb reboot
  • 1

注意事項

看完了不要跑,這里還有注意事項:?
在開發過程中,尤其是Framework相關開發時,有時候需要重新編譯資源文件.編譯順序和注意事項如下:?
1,資源文件位置:frameworks/base/core/res?
2,編譯后生成的文件:framework-res.apk 另外com.android.internal.R會更新這個R.java所在目錄為/out/target/common/R/com/android/internal.?
3,編譯資源后,必須重新編譯framework.jar.?
4,如果在frameworks/base/core/res執行mm是并不重新編譯,請使用toutch ### 命令?
“###”代表目錄下的一個文件.?
5,資源文件要小寫.?
6,如果沒有必要,不要編譯資源文件,可以用其他方式使用資源,比如將資源使用adb push 傳到某個目?
錄,程序中直接指定具體目錄.我在編譯資源過程中遇到一些奇怪的問題,比如有時候許多圖標會顯?
示錯誤,原因猜測跟重新編譯資源有關,可以試著重新編譯services.jar并替換看看.

舉一個例子:假如我想在WindowManagerService.java中使用一個圖片資源pic.png.順序如下.?
1,將文件pic.png拷貝到位置:frameworks/base/core/res/res/drawable下.?
2,在frameworks/base/core/res/res/drawable目錄下執行touch pic.png.?
3,進入目錄frameworks/base/core/res/ 執行mm命令, 編譯 framework-res.apk?
4,執行完后com.android.internal.R 會新生成一個R.drawable.pic的引用.在程序中使用即可.?
5,在目錄frameworks/base/ 下執行mm 編譯 framework.jar.?
6,在WindowManagerService.java中使用com.android.internal.R.drawable.pic,使用完后保存文件.?
7,進入目錄frameworks/base/services/java/ 執行mm 編譯 services.jar?
8,替換機器上(虛擬機或者真機)的jar apk文件.?
adb push framework-res.apk /system/framework/?
adb push services.jar /system/framework/?
adb push framework.jar /system/framework/?
執行命令時注意framework-res.apk 的真實路徑.?
9,reboot 機器,查看修改結果.大功告成!

總結

以上是生活随笔為你收集整理的修改framework后重新刷入手机的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。