论初次修改 Android framework 代码
點擊打開鏈接
論初次修改 Android framework 代碼
背景
公司產品需求,需要修改系統 framework 層的部分界面顯示,包括聲音調節、亮度調節、長按電源關機等。
準備
我并不是白手起步,有負責硬件的同學幫我搭建編譯環境、vim 編輯環境(一些輔助插件)。由于 Android 源碼結構太過復雜,不建議強記,但是它的層次還是要大概清楚,比如 framework層 -> base -> core,policy,package,大部分的需求,在這三個包里面進行代碼的修改即可。
Note:以下所有操作均在 Ubtuntu 14.04 LTS 系統上完成。
修改音量調節
對于不熟悉 android 源碼的同學,比如我,選擇的入手點很重要,首先是代碼、界面的定位,找到需要修改的類和布局文件,這需要一點點耐心。先來看看原生的界面顯示:
這是我用三星s6調節音量的界面,僅供參考。
看看這張圖片有什么亮點,咳咳,是特點,細心的同學的已經發現了,界面上有一個文本:鈴聲(不同的設備(手機)、不同的場景顯示的文本不一樣,也有不顯示文本的奇葩系統,不管是哪種情況,最多只是增加了定位的難度而已,其實 android 源碼的結構不會發生太大的變化)。文本有時候顯示的是:音量、聲音、媒體,不幸的是,公司的設備不顯示任何文本文字。
首先進入到 android -> framework -> base 目錄下,下文不做特殊說明,都是在此目錄下,執行以下命令:
grep "鈴聲" -r *該命令是在當前目錄及子目錄中,尋找所有使用“鈴聲”的文件,大致結果如下(僅供參考):
很容易就看出,這些文本文字都定義在 strings.xml 資源文件中,然后我們根據任意資源名稱再次搜索,這里我們就選擇第一個,命令如下:
grep "volume_ringtone" -r *結果如下:
偶偶,結果好多,我只截取了部分,不過也能看出搜索答案了,搜索結果還是在 string.xml 文件中,沒有 Java 文件,沒有布局文件,這表示我們的搜索結果是不對的(沮喪臉)。Why? 因為設備不是顯示“鈴聲”,用它進行搜索當然無結果咯,就像女朋友想買一個包包,你卻給她買了臺電腦一樣。
這個時候你就需要不斷的用不同的關鍵詞搜索,用甜言蜜語去哄女盆友。我用了:聲音、音量、語音等,功夫不負有心人,終于讓我試出來了。搜索“語音”,結果如下:
用上圖紅框中的 serviceClassVoice 進行搜索,結果如下:
終于不再是清一色的 strings.xml 文件了,這一步基本算是完成了。最后仔細看了看,居然搜索“音聲”也能搜索出來,wtf!
Note:在沒有文本提示的情況下,只能大概的推測出中文文本,或者翻譯成英文進行搜索,這不能缺乏耐心哦~~
根據第一步找到的 volume_adjust_item.xml 文件,進一步定位 java 文件,命令如下:
grep volume_adjust_item -r *結果如下圖所示:
很容易就找到了 VolumePanel.java 文件,這就是調節音量的核心代碼文件,至于怎么蹂躪它,就看你的本事了。
總結
學到了很多命令,以及 Vim 編輯器的使用,以及編譯推送命令。比如 /查找、hjkl方向鍵、n和shift+n、adb push、adb pull、stop、start等。
以調節音量為例子,以此類推,調節亮度,調節關機界面等,都是差不多的步驟。
總結
以上是生活随笔為你收集整理的论初次修改 Android framework 代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 修改 framework 代码的经验和踩
- 下一篇: Android7.1修改系统默认多媒体音