Android源碼開(kāi)發(fā)篇(四)Android FW代碼調(diào)試

來(lái)點(diǎn)前奏說(shuō)明

當(dāng)你打開(kāi)這個(gè)文檔的時(shí)候残腌,你已經(jīng)做好準(zhǔn)備了叠艳,話(huà)不多說(shuō)開(kāi)搞烁登。前提你得有源碼职烧,源碼參考
Android源碼開(kāi)發(fā)篇(一)9.0/10.0源碼下載 編譯 刷機(jī)

在Android升級(jí)到P之后,Google默認(rèn)強(qiáng)制打開(kāi)了pre-odex防泵,導(dǎo)致本地調(diào)試的時(shí)候修改fw代碼push之后不work或者開(kāi)不了機(jī)器蚀之。原因在于打開(kāi)pre-odex的情況下,對(duì)于bootclasspath系統(tǒng)會(huì)默認(rèn)生成oat/art/vdex等文件捷泞,這些jar包之間相互依賴(lài)足删,耦合非常高。一旦修改push輕則不work锁右,重則系統(tǒng)出現(xiàn)未知的異常失受。

這對(duì)于本地編譯rom的調(diào)試帶來(lái)極大不便,這里提供一些方案盡量減少本地編譯的時(shí)間咏瑟,方便push調(diào)試拂到。

1、關(guān)閉pre-odex開(kāi)關(guān)
A 修改以下文件
build/core/board_config.mk
build/core/dex_preopt_config.mk
diff --git a/core/board_config.mk b/core/board_config.mk
index ac0f27da53..ea1999590e 100644
--- a/core/board_config.mk
+++ b/core/board_config.mk
@@ -97,7 +97,13 @@ _board_strip_readonly_list += $(_build_broken_var_list)
 
 # Conditional to building on linux, as dex2oat currently does not work on darwin.
 ifeq ($(HOST_OS),linux)
# zhangbin mod start
  # 支持通過(guò)export WITH_DEXPREOPT=false 來(lái)關(guān)閉preopt
 # WITH_DEXPREOPT := true
 ifeq ($(WITH_DEXPREOPT),)
   WITH_DEXPREOPT := true
 endif
  # zhangbin mod end
 endif
 # ###############################################################
diff --git a/core/dex_preopt_config.mk b/core/dex_preopt_config.mk
index b5834b08b3..53a4273944 100644
--- a/core/dex_preopt_config.mk
+++ b/core/dex_preopt_config.mk
@@ -37,7 +37,7 @@ ifeq ($(HOST_OS),linux)
   ifeq (,$(filter eng, $(TARGET_BUILD_VARIANT)))
     ifneq (true,$(WITH_DEXPREOPT))
       ifneq (true,$(WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY))
# zhangbin del end
        # $(call pretty-error, DEXPREOPT must be enabled for user and userdebug builds)
# zhangbin del end
       endif
     endif
   endif

source build/envsetup.sh 
lunch  aosp_sailfish-userdebug
B 配置如下宏關(guān)閉pre-odex
export WITH_DEXPREOPT=false 

編譯framework.jar和services.jar

make framework -j8 && make services -j8 
編譯成功

在aosp/out/target/product/sailfish/system/framework目錄下

adb root
adb remount
adb disable-verity
adb reboot
adb root
adb remount
adb push framework.jar  system/framework/
如何驗(yàn)證framework.jar 是否成功和有效

我的做法修改LayoutInflater.java文件的

DEBUG修改為true

過(guò)濾LayoutInflater 這個(gè)關(guān)鍵字 隨機(jī)打開(kāi)應(yīng)用一般都會(huì)打印log的 如果輸出了就成功了 之后繼續(xù)搞起來(lái)吧码泞。兄旬。。


LayoutInflater
如何驗(yàn)證services.jar 是否成功和有效
adb root
adb remount
adb disable-verity
adb reboot
adb root
adb remount
adb push  services.jar  system/framework/

我的做法修改WindowManagerDebugConfig.java文件的

DEBUG_ANIM修改為true

過(guò)濾Loading animations這個(gè)關(guān)鍵字 隨機(jī)打開(kāi)應(yīng)用一般都會(huì)打印log的 如果和我類(lèi)似就成功了 之后繼續(xù)搞起來(lái)吧余寥。领铐。。

Loading animations
源碼導(dǎo)入Studio
source build/envsetup.sh 
lunch  aosp_sailfish-userdebug
mmm development/tools/idegen/
development/tools/idegen/idegen.sh

會(huì)在根目錄下面生成android.ipr和android.iml

過(guò)濾一些模塊

如果把Android所有的源碼全部導(dǎo)入到Android Studio里面去宋舷,工程將會(huì)非常大绪撵,而且會(huì)很耗時(shí)間,那么我們就可以把不需要的模塊給過(guò)濾掉祝蝠。
打開(kāi)android.iml文件音诈,加入以下代碼,修改excludeFolder的配置:

<excludeFolder url="file://$MODULE_DIR$/.repo"/>
<excludeFolder url="file://$MODULE_DIR$/abi"/>
<excludeFolder url="file://$MODULE_DIR$/frameworks/base/docs"/>
<excludeFolder url="file://$MODULE_DIR$/art"/>
<excludeFolder url="file://$MODULE_DIR$/bionic"/>
<excludeFolder url="file://$MODULE_DIR$/bootable"/>
<excludeFolder url="file://$MODULE_DIR$/build"/>
<excludeFolder url="file://$MODULE_DIR$/cts"/>
<excludeFolder url="file://$MODULE_DIR$/dalvik"/>
<excludeFolder url="file://$MODULE_DIR$/developers"/>
<excludeFolder url="file://$MODULE_DIR$/development"/>
<excludeFolder url="file://$MODULE_DIR$/device"/>
<excludeFolder url="file://$MODULE_DIR$/docs"/>
<excludeFolder url="file://$MODULE_DIR$/external"/>
<excludeFolder url="file://$MODULE_DIR$/hardware"/>
<excludeFolder url="file://$MODULE_DIR$/kernel-3.18"/>
<excludeFolder url="file://$MODULE_DIR$/libcore"/>
<excludeFolder url="file://$MODULE_DIR$/libnativehelper"/>
<excludeFolder url="file://$MODULE_DIR$/ndk"/>
<excludeFolder url="file://$MODULE_DIR$/out"/>
<excludeFolder url="file://$MODULE_DIR$/pdk"/>
<excludeFolder url="file://$MODULE_DIR$/platform_testing"/>
<excludeFolder url="file://$MODULE_DIR$/prebuilts"/>
<excludeFolder url="file://$MODULE_DIR$/rc_projects"/>
<excludeFolder url="file://$MODULE_DIR$/sdk"/>
<excludeFolder url="file://$MODULE_DIR$/system"/>
<excludeFolder url="file://$MODULE_DIR$/tools"/>
<excludeFolder url="file://$MODULE_DIR$/trusty"/>
<excludeFolder url="file://$MODULE_DIR$/vendor"/>

然后File -> Open---android.ipr 等待一大會(huì) 性能低的可能會(huì)卡住

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绎狭,一起剝皮案震驚了整個(gè)濱河市细溅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坟岔,老刑警劉巖谒兄,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異社付,居然都是意外死亡承疲,警方通過(guò)查閱死者的電腦和手機(jī)邻耕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)燕鸽,“玉大人兄世,你說(shuō)我怎么就攤上這事“⊙校” “怎么了御滩?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)党远。 經(jīng)常有香客問(wèn)我削解,道長(zhǎng),這世上最難降的妖魔是什么沟娱? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任氛驮,我火速辦了婚禮,結(jié)果婚禮上济似,老公的妹妹穿的比我還像新娘矫废。我一直安慰自己,他們只是感情好砰蠢,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布蓖扑。 她就那樣靜靜地躺著,像睡著了一般台舱。 火紅的嫁衣襯著肌膚如雪律杠。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,829評(píng)論 1 290
  • 那天柿赊,我揣著相機(jī)與錄音俩功,去河邊找鬼。 笑死碰声,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的熬甫。 我是一名探鬼主播胰挑,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼椿肩!你這毒婦竟也來(lái)了瞻颂?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤郑象,失蹤者是張志新(化名)和其女友劉穎贡这,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體厂榛,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盖矫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年丽惭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辈双。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡责掏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出湃望,到底是詐尸還是另有隱情换衬,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布证芭,位于F島的核電站瞳浦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏废士。R本人自食惡果不足惜术幔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望湃密。 院中可真熱鬧诅挑,春花似錦、人聲如沸泛源。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)达箍。三九已至没龙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缎玫,已是汗流浹背硬纤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赃磨,地道東北人筝家。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像邻辉,于是被迫代替她去往敵國(guó)和親溪王。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349