日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

论初次修改 Android framework 代码

發(fā)布時(shí)間:2025/4/16 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 论初次修改 Android framework 代码 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

點(diǎn)擊打開鏈接

論初次修改 Android framework 代碼

背景

公司產(chǎn)品需求,需要修改系統(tǒng) framework 層的部分界面顯示,包括聲音調(diào)節(jié)、亮度調(diào)節(jié)、長按電源關(guān)機(jī)等。

準(zhǔn)備

我并不是白手起步,有負(fù)責(zé)硬件的同學(xué)幫我搭建編譯環(huán)境、vim 編輯環(huán)境(一些輔助插件)。由于 Android 源碼結(jié)構(gòu)太過復(fù)雜,不建議強(qiáng)記,但是它的層次還是要大概清楚,比如 framework層 -> base -> core,policy,package,大部分的需求,在這三個(gè)包里面進(jìn)行代碼的修改即可。

Note:以下所有操作均在 Ubtuntu 14.04 LTS 系統(tǒng)上完成。

修改音量調(diào)節(jié)

  • 開始:代碼定位
    對于不熟悉 android 源碼的同學(xué),比如我,選擇的入手點(diǎn)很重要,首先是代碼、界面的定位,找到需要修改的類和布局文件,這需要一點(diǎn)點(diǎn)耐心。先來看看原生的界面顯示:
  • 這是我用三星s6調(diào)節(jié)音量的界面,僅供參考。

    看看這張圖片有什么亮點(diǎn),咳咳,是特點(diǎn),細(xì)心的同學(xué)的已經(jīng)發(fā)現(xiàn)了,界面上有一個(gè)文本:鈴聲(不同的設(shè)備(手機(jī))、不同的場景顯示的文本不一樣,也有不顯示文本的奇葩系統(tǒng),不管是哪種情況,最多只是增加了定位的難度而已,其實(shí) android 源碼的結(jié)構(gòu)不會(huì)發(fā)生太大的變化)。文本有時(shí)候顯示的是:音量、聲音、媒體,不幸的是,公司的設(shè)備不顯示任何文本文字。

    首先進(jìn)入到 android -> framework -> base 目錄下,下文不做特殊說明,都是在此目錄下,執(zhí)行以下命令:

    grep "鈴聲" -r *

    該命令是在當(dāng)前目錄及子目錄中,尋找所有使用“鈴聲”的文件,大致結(jié)果如下(僅供參考):

    很容易就看出,這些文本文字都定義在 strings.xml 資源文件中,然后我們根據(jù)任意資源名稱再次搜索,這里我們就選擇第一個(gè),命令如下:

    grep "volume_ringtone" -r *

    結(jié)果如下:

    偶偶,結(jié)果好多,我只截取了部分,不過也能看出搜索答案了,搜索結(jié)果還是在 string.xml 文件中,沒有 Java 文件,沒有布局文件,這表示我們的搜索結(jié)果是不對的(沮喪臉)。Why? 因?yàn)樵O(shè)備不是顯示“鈴聲”,用它進(jìn)行搜索當(dāng)然無結(jié)果咯,就像女朋友想買一個(gè)包包,你卻給她買了臺(tái)電腦一樣。

    這個(gè)時(shí)候你就需要不斷的用不同的關(guān)鍵詞搜索,用甜言蜜語去哄女盆友。我用了:聲音、音量、語音等,功夫不負(fù)有心人,終于讓我試出來了。搜索“語音”,結(jié)果如下:

    用上圖紅框中的 serviceClassVoice 進(jìn)行搜索,結(jié)果如下:

    終于不再是清一色的 strings.xml 文件了,這一步基本算是完成了。最后仔細(xì)看了看,居然搜索“音聲”也能搜索出來,wtf!

    Note:在沒有文本提示的情況下,只能大概的推測出中文文本,或者翻譯成英文進(jìn)行搜索,這不能缺乏耐心哦~~

  • 定位 java 文件
  • 根據(jù)第一步找到的 volume_adjust_item.xml 文件,進(jìn)一步定位 java 文件,命令如下:

    grep volume_adjust_item -r *

    結(jié)果如下圖所示:

    很容易就找到了 VolumePanel.java 文件,這就是調(diào)節(jié)音量的核心代碼文件,至于怎么蹂躪它,就看你的本事了。

    總結(jié)

    學(xué)到了很多命令,以及 Vim 編輯器的使用,以及編譯推送命令。比如 /查找、hjkl方向鍵、n和shift+n、adb push、adb pull、stop、start等。

    以調(diào)節(jié)音量為例子,以此類推,調(diào)節(jié)亮度,調(diào)節(jié)關(guān)機(jī)界面等,都是差不多的步驟。


    總結(jié)

    以上是生活随笔為你收集整理的论初次修改 Android framework 代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。