Android P打開啟動過程init log

前不久做項目是抽莱,遇到在init.rc添加on property:init.svc.bootanim=running,無法trigger,然而使用on property:sys.boot_completed=1衡载,卻可以trigger棱貌。

#無法Trigger
on property:init.svc.bootanim=running    
    write /dev/kmsg "Service bootanim running "

#可以Trigger
on property:sys.boot_completed=1     
    write /dev/kmsg "system boot completed "

打開init log冻河,抓取啟動log debug上述問題原因

1.添加printk.devkmsg=on到cmdline,把init過程的log輸出到kernel log中

BOARD_KERNEL_CMDLINE += printk.devkmsg=on

2.添加androidboot.selinux=permissive到cmdline, 關(guān)閉selinux權(quán)限

BOARD_KERNEL_CMDLINE += androidboot.selinux=permissive

3.抓取開機(jī)過程中dmesg

[   19.167112] [<6>][1, init]init: Parsing file /vendor/etc/init/hw/init.target.rc...
[   19.177005] [<6>][1, init]init: /vendor/etc/init/hw/init.target.rc: 234: ParseTriggers() failed: unexported property tigger found: init.svc.bootanim

4.根據(jù)log定位代碼

Result<Success> ParsePropertyTrigger(conststd::string& trigger, Subcontext* subcontext,
                                     std::map<std::string, std::string>* property_triggers) {
    conststaticstd::stringprop_str("property:");
    std::stringprop_name(trigger.substr(prop_str.length()));
    size_tequal_pos = prop_name.find('=');
    if (equal_pos == std::string::npos) {
        return Error() << "property trigger found without matching '='";
    }

    std::stringprop_value(prop_name.substr(equal_pos + 1));
    prop_name.erase(equal_pos);

if (!IsActionableProperty(subcontext, prop_name)) {//init.svc.bootanim符合此條件钝计,進(jìn)入分支
        //報錯log
        return Error() << "unexported property tigger found: " << prop_name;
    }if (auto [it, inserted] = property_triggers->emplace(prop_name, prop_value); !inserted) {
        return Error() << "multiple property triggers found for same property";
    }
    return Success();
}
// 查看init.svc.bootanim為何滿足上述條件
boolIsActionableProperty(Subcontext* subcontext, conststd::string& prop_name) {
    staticboolenabled = GetBoolProperty("ro.actionable_compatible_property.enabled", false);

    if (subcontext == nullptr || !enabled) {
        return true;
    }

if (kExportedActionableProperties.count(prop_name) == 1) {
        return true;
    }for (constauto& prefix : kPartnerPrefixes) {
        if (android::base::StartsWith(prop_name, prefix)) {
            return true;
        }
    }
    return false; // init.svc.bootanim 從這里返回false
} 

5.上述代碼,需要IsActionableProperty 函數(shù)返回true瘫絮,才能trigger屬性涨冀,通過log我們已經(jīng)找到初步原因。那么怎么才能滿足返回true呢麦萤?

  • 修改"ro.actionable_compatible_property.enabled" 屬性值為false —— 這樣會造成CTS問題鹿鳖,不可取
  • 在kExportedActionableProperties 列表中添加init.svc.bootanim屬性 —— 暫未測出CTS/VTS問題,修改可取
diff --git a/init/stable_properties.h b/init/stable_properties.h
index 0956a4a..0e3a20c 100644
--- a/init/stable_properties.h
+++ b/init/stable_properties.h
@@ -33,6 +33,7 @@ static const std::set<std::string> kExportedActionableProperties = {
   "init.svc.console",
   "init.svc.mediadrm",
   "init.svc.surfaceflinger",
+    "init.svc.bootanim", //add
   "init.svc.zygote",
   "persist.bluetooth.btsnoopenable",
   "persist.sys.crash_rcu",
  1. 通過Debug發(fā)現(xiàn)频鉴,Android P 添加了一個類似白名單的機(jī)制栓辜,只有在kExportedActionableProperties列表中的property才能在init.rc觸發(fā)。此部分更詳細(xì)的源碼分析可以參考這個童鞋的簡書垛孔,寫得很好藕甩。Android P on property屬性無法trigger流程分析
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市周荐,隨后出現(xiàn)的幾起案子狭莱,更是在濱河造成了極大的恐慌,老刑警劉巖概作,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腋妙,死亡現(xiàn)場離奇詭異,居然都是意外死亡讯榕,警方通過查閱死者的電腦和手機(jī)骤素,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來愚屁,“玉大人济竹,你說我怎么就攤上這事■保” “怎么了送浊?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長丘跌。 經(jīng)常有香客問我袭景,道長,這世上最難降的妖魔是什么闭树? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任耸棒,我火速辦了婚禮,結(jié)果婚禮上报辱,老公的妹妹穿的比我還像新娘与殃。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布奈籽。 她就那樣靜靜地躺著饥侵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪衣屏。 梳的紋絲不亂的頭發(fā)上躏升,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機(jī)與錄音狼忱,去河邊找鬼膨疏。 笑死,一個胖子當(dāng)著我的面吹牛钻弄,可吹牛的內(nèi)容都是我干的佃却。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼窘俺,長吁一口氣:“原來是場噩夢啊……” “哼饲帅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瘤泪,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤灶泵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后对途,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赦邻,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年实檀,在試婚紗的時候發(fā)現(xiàn)自己被綠了惶洲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡膳犹,死狀恐怖恬吕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情镣奋,我是刑警寧澤币呵,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布怀愧,位于F島的核電站侨颈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏芯义。R本人自食惡果不足惜哈垢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望扛拨。 院中可真熱鬧耘分,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至渴频,卻和暖如春芽丹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背卜朗。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工拔第, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人场钉。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓蚊俺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親逛万。 傳聞我的和親對象是個殘疾皇子泳猬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評論 2 354