基于Android系統(tǒng)的車載系統(tǒng)的快速啟動(dòng)方法
【專利摘要】本發(fā)明提供了一種基于Android系統(tǒng)的車載系統(tǒng)的快速啟動(dòng)方法,包括:對(duì)原生Android系統(tǒng)的引導(dǎo)程序、內(nèi)核和用戶域的啟動(dòng)方式進(jìn)行優(yōu)化,以使優(yōu)化后的啟動(dòng)時(shí)間小于原生Android系統(tǒng)的默認(rèn)啟動(dòng)時(shí)間;以優(yōu)化后的方式加載并啟動(dòng)所述引導(dǎo)程序;以優(yōu)化后的方式加載并啟動(dòng)所述內(nèi)核;以優(yōu)化后的方式加載并啟動(dòng)所述用戶域。本發(fā)明能夠縮短車載系統(tǒng)的啟動(dòng)時(shí)間,有利于改善用戶體驗(yàn)。
【專利說(shuō)明】基于Android系統(tǒng)的車載系統(tǒng)的快速啟動(dòng)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及車載系統(tǒng)的啟動(dòng)技術(shù),尤其涉及一種基于Android系統(tǒng)的車載系統(tǒng)的 快速啟動(dòng)方法。
【背景技術(shù)】
[0002]現(xiàn)有的基于Android系統(tǒng)的車載娛樂(lè)系統(tǒng)保留了 Android系統(tǒng)的諸多優(yōu)點(diǎn),例如 良好的可移植性和定制性、豐富的應(yīng)用軟件生態(tài)環(huán)境等,但同時(shí)也一并繼承遺留了 Android 系統(tǒng)開(kāi)機(jī)啟動(dòng)時(shí)間過(guò)長(zhǎng)的缺點(diǎn)。
[0003] 原生的Android系統(tǒng)的開(kāi)機(jī)啟動(dòng)過(guò)程如圖i所示,啟動(dòng)過(guò)程按照引導(dǎo)程序 (bootloader) 11、內(nèi)核(kernel) 12和用戶域(user space)的順序先后加載啟動(dòng),其中用戶 域的加載啟動(dòng)按照初始化程序/啟動(dòng)腳本(init/init.rc) 131、孵化器(Zygote) 132、系統(tǒng) 服務(wù)(System Server) 133和桌面啟動(dòng)器(Launcher) 134的順序先后加載啟動(dòng)。
[0004]其中,用戶域的加載啟動(dòng)的詳細(xì)過(guò)程如圖2所示,首先加載啟動(dòng)初始化程序/啟 動(dòng)腳本(init/init· rc) 21,然后啟動(dòng)本地服務(wù)22,之后啟動(dòng)Android服務(wù)23,最后加載啟 動(dòng)Android應(yīng)用24。其中,在原生的Android系統(tǒng)中,本地服務(wù)22包括rild、netd、媒體 (media)、醉化器(zygote)以及其他服務(wù);Android服務(wù)包括電源管理器(Power Manager)、 內(nèi)容管理器(Content Manager)、打包器管理器(Packager Manager)以及其他服務(wù)。
[0005]現(xiàn)有的基于Android系統(tǒng)的車載系統(tǒng)的啟動(dòng)時(shí)間比較長(zhǎng),例如冷開(kāi)機(jī)時(shí)間普遍都 超過(guò)30秒。在車載系統(tǒng)領(lǐng)域,這樣漫長(zhǎng)的開(kāi)機(jī)等待時(shí)間給用戶使用帶來(lái)了不便,導(dǎo)致了非 常差的用戶體驗(yàn)。
【發(fā)明內(nèi)容】
[0006]本發(fā)明要解決的技術(shù)問(wèn)題是提供一種基于Android系統(tǒng)的車載系統(tǒng)的快速啟動(dòng) 方法,能夠縮短車載系統(tǒng)的啟動(dòng)時(shí)間,有利于改善用戶體驗(yàn)。
[0007]為解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種基于Android系統(tǒng)的車載系統(tǒng)的快速啟 動(dòng)方法,包括:
[0008]對(duì)原生Android系統(tǒng)的引導(dǎo)程序、內(nèi)核和用戶域的啟動(dòng)方式進(jìn)行優(yōu)化,以使優(yōu)化 后的啟動(dòng)時(shí)間小于原生Android系統(tǒng)的默認(rèn)啟動(dòng)時(shí)間;
[0009]以優(yōu)化后的方式加載并啟動(dòng)所述引導(dǎo)程序;
[0010]以優(yōu)化后的方式加載并啟動(dòng)所述內(nèi)核;
[0011 ]以優(yōu)化后的方式加載并啟動(dòng)所述用戶域。
[0012]根據(jù)本發(fā)明的一個(gè)實(shí)施例,對(duì)所述引導(dǎo)程序、內(nèi)核和用戶域的啟動(dòng)方式進(jìn)行優(yōu)化 包括:根據(jù)所述車載系統(tǒng)的軟硬件配置對(duì)所述引導(dǎo)程序、內(nèi)核和用戶域的啟動(dòng)方式進(jìn)行優(yōu) 化。
[0013]根據(jù)本發(fā)明的一個(gè)實(shí)施例,根據(jù)所述車載系統(tǒng)的軟硬件配置對(duì)所述引導(dǎo)程序的啟 動(dòng)方式進(jìn)行優(yōu)化包括以下操作中的一項(xiàng)或多項(xiàng):
[0014] 裁減所述引導(dǎo)程序中與網(wǎng)絡(luò)相關(guān)的模塊;
[0015] 減小讀取uramdisk. img區(qū)域和ulmage區(qū)域的空間,使其小于原生Android系統(tǒng) 的默認(rèn)值;
[0016] 減小MMC驅(qū)動(dòng)中發(fā)送命令的延遲時(shí)間,使其小于原生Android系統(tǒng)的默認(rèn)值并與 所述車載系統(tǒng)的硬件配置適配。
[0017] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,對(duì)所述引導(dǎo)程序的啟動(dòng)方式進(jìn)行優(yōu)化還包括以下操作 中的一項(xiàng)或多項(xiàng):
[0018] 去除加載所述內(nèi)核之前的等待時(shí)間;
[0019] 對(duì)于同一 MMC硬件僅調(diào)用一次MMC初始化程序;
[0020]將是否進(jìn)入還原模式的判斷方式修改為通過(guò)讀取預(yù)設(shè)偏移位置的裸數(shù)據(jù)來(lái)判斷。
[0021] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,根據(jù)所述車載系統(tǒng)的軟硬件配置對(duì)所述內(nèi)核的啟動(dòng)方 式進(jìn)行優(yōu)化包括以下操作中的一項(xiàng)或多項(xiàng):
[0022] 減小Pty設(shè)備節(jié)點(diǎn)的數(shù)量,使其小于原生Android系統(tǒng)的默認(rèn)值并與所述車載系 統(tǒng)的軟硬件配置適配;
[0023] 延遲所述內(nèi)核中的initcall機(jī)制,以將所述內(nèi)核的多個(gè)驅(qū)動(dòng)中的一部分轉(zhuǎn)移至 所述用戶域的啟動(dòng)過(guò)程進(jìn)行初始化;
[0024] 對(duì)電源管理芯片的初始化過(guò)程進(jìn)行優(yōu)化,以去除與所述車載系統(tǒng)的硬件配置不相 關(guān)的部分;
[0025] 裁減所述車載系統(tǒng)的硬件配置以外的設(shè)備驅(qū)動(dòng);
[0026]裁減所述車載系統(tǒng)未使用的文件系統(tǒng)。
[0027] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,對(duì)所述內(nèi)核的啟動(dòng)方式進(jìn)行優(yōu)化還包括:去除內(nèi)核的 打印信息。
[0028] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,根據(jù)所述車載系統(tǒng)的軟硬件配置對(duì)所述用戶域的啟動(dòng) 方式進(jìn)行優(yōu)化包括以下操作中的一項(xiàng)或多項(xiàng):
[0029] 刪除所述車載系統(tǒng)未使用的Android服務(wù);
[0030] 對(duì)預(yù)加載的類列表做裁減優(yōu)化,將所述車載系統(tǒng)未使用的類從所述預(yù)加載的類列 表中刪除;
[0031] 裁減以太網(wǎng)服務(wù);
[0032] 移除Sensor Manager和Battery Service內(nèi)部的全部操作并保留接口。
[0033]根據(jù)本發(fā)明的一個(gè)實(shí)施例,對(duì)所述用戶域的啟動(dòng)方式進(jìn)行優(yōu)化還包括以下操作中 的一項(xiàng)或多項(xiàng):
[0034] 將Entropy Service對(duì)文件的讀寫(xiě)修改為異步的;
[0035] 將Package Manager Service對(duì)配置文件的寫(xiě)操作修改為異步的;
[0036]增大垃圾收集的閾值,以減小垃圾收集的次數(shù);
[0037]將桌面啟動(dòng)器和系統(tǒng)用戶界面設(shè)置為優(yōu)先于其他應(yīng)用啟動(dòng);
[0038] 將init. rc文件中對(duì)/dev/路徑下設(shè)備節(jié)點(diǎn)權(quán)限的修改轉(zhuǎn)移至uevent. rc文件 中;
[0039] 預(yù)先在uramdisk中創(chuàng)建掛載點(diǎn)目錄,以避免動(dòng)態(tài)創(chuàng)建;
[0040] 關(guān)閉Java本地調(diào)用的檢查;
[0041] 壓縮所述桌面啟動(dòng)器中的界面圖片資源。
[0042] 與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn):
[0043]本發(fā)明實(shí)施例的基于Android系統(tǒng)的車載系統(tǒng)的快速啟動(dòng)方法中,首先對(duì) Android系統(tǒng)的引導(dǎo)程序、內(nèi)核和用戶域的啟動(dòng)方式進(jìn)行優(yōu)化,之后按照常規(guī)的順序,以優(yōu) 化后的方式加載并啟動(dòng)引導(dǎo)程序、內(nèi)核和用戶域,從而縮短啟動(dòng)時(shí)間,改善用戶體驗(yàn)。
[0044]進(jìn)一步而言,對(duì)于引導(dǎo)程序、內(nèi)核和用戶域的優(yōu)化可以是根據(jù)車載系統(tǒng)的軟硬件 配置來(lái)進(jìn)行的,使得優(yōu)化過(guò)程更加有針對(duì)性。
【專利附圖】
【附圖說(shuō)明】
[0045]圖1是原生Android系統(tǒng)的啟動(dòng)流程示意圖;
[0046]圖2是原生Android系統(tǒng)的用戶域的詳細(xì)啟動(dòng)流程示意圖;
[0047]圖3是本發(fā)明實(shí)施例的基于Android系統(tǒng)的車載系統(tǒng)的快速啟動(dòng)方法的流程示意 圖。
【具體實(shí)施方式】
[0048] 下面結(jié)合具體實(shí)施例和附圖對(duì)本發(fā)明作進(jìn)一步說(shuō)明,但不應(yīng)以此限制本發(fā)明的保 護(hù)范圍。
[0049] 參考圖3,本實(shí)施例中,基于Android系統(tǒng)的車載系統(tǒng)的快速啟動(dòng)方法包括如下步 驟:
[0050] 步驟S31,對(duì)原生Andro i d系統(tǒng)的引導(dǎo)程序、內(nèi)核和用戶域的啟動(dòng)方式進(jìn)行優(yōu)化, 以使優(yōu)化后的啟動(dòng)時(shí)間小于原生Android系統(tǒng)的默認(rèn)啟動(dòng)時(shí)間;
[0051] 步驟S32,以優(yōu)化后的方式加載并啟動(dòng)所述引導(dǎo)程序;
[0052] 步驟S33,以優(yōu)化后的方式加載并啟動(dòng)所述內(nèi)核;
[0053] 步驟S34,以優(yōu)化后的方式加載并啟動(dòng)所述用戶域。
[0054] 本實(shí)施例保留了原生Android系統(tǒng)原有的啟動(dòng)階段(包括引導(dǎo)程序、內(nèi)核和用戶 域)和順序不變,但針對(duì)車載系統(tǒng)本身的特點(diǎn)對(duì)各個(gè)啟動(dòng)階段進(jìn)行了優(yōu)化和改良,從而縮短 了車載系統(tǒng)的開(kāi)機(jī)啟動(dòng)時(shí)間。在一實(shí)例中,采用該方法可以使得車載設(shè)備的開(kāi)機(jī)時(shí)間降低 至13秒。
[0055] 進(jìn)一步而言,對(duì)各個(gè)啟動(dòng)階段的優(yōu)化包括根據(jù)車載系統(tǒng)的軟硬件配置進(jìn)行優(yōu)化, 以及其他通用的優(yōu)化。下面對(duì)各個(gè)啟動(dòng)階段的具體優(yōu)化方法進(jìn)行詳細(xì)說(shuō)明。
[0056] 首先介紹對(duì)于引導(dǎo)程序的優(yōu)化。
[0057] 首先可以裁減引導(dǎo)程序中于網(wǎng)絡(luò)相關(guān)的模塊。例如在一實(shí)例中,車載系統(tǒng)被配置 為無(wú)需使用原生Andro i d系統(tǒng)提供的網(wǎng)絡(luò),那么可以裁減FTP上傳/下載相關(guān)的模塊,還可 以裁減網(wǎng)絡(luò)掛載分區(qū)的NFS命令等。
[0058] 另外,還可以減小讀取uramdisk· img區(qū)域和ulmage區(qū)域的空間大小,使其小于原 生Android系統(tǒng)的默認(rèn)值。例如,在一實(shí)例中,可以將讀取uramdisk. img區(qū)域和ulmage區(qū) 域這兩個(gè)區(qū)域的空間減小至約2· 6M。
[0059] 另外還可以優(yōu)化MMC驅(qū)動(dòng)性能,減小MMC驅(qū)動(dòng)中發(fā)送命令的延遲時(shí)間,使其小于原 生Android系統(tǒng)的默認(rèn)值并與車載系統(tǒng)的硬件配置適配。例如可以從loooo納秒減小至1 納秒,示意性的實(shí)現(xiàn)代碼如下:
[0060] esdhc_send_cmc^sfiritet mmc *mmc, struct mmc cmd *cmd, struct mmc data *data) * N?te: This is way more than 8 cycles, but 1ms seems to # a-es?lve timing issues with some cards - udelayCaOGii; //刪除 + udelay(l); //添加 /* Set up for a lata transfer if we have one if (data) void set^sysctl(struct mmc *mmc, uint clock) tmp = (readi(®s->sysctl) & ( SYSCTL CLOCK MASK)) | elk; writel(tmp, ®s->sysctl); - udelay( 10000); //刪除 + udelay(3000); //添加 ·
[0061] 另外,還可以去除引導(dǎo)程序啟動(dòng)過(guò)程中的延遲等待時(shí)間,也就是引導(dǎo)程序啟動(dòng)過(guò) 程的結(jié)尾至加載內(nèi)核之前的等待時(shí)間。在原生Android系統(tǒng)中,該等待時(shí)間通常為 3s,本實(shí) 施例中可以將其設(shè)置為0。例如可以通過(guò)下述方式實(shí)現(xiàn):
[0062] -#define CONFIG-B00TDELAY 3 //刪除
[0063] +#define CONFIG_B〇〇TDELAY 0 //添加
[0064] 另外,通過(guò)優(yōu)化,可以對(duì)于同一 MMC硬件僅調(diào)用一·次MMC初始化程序(mmc_init), 而原生Android系統(tǒng)在每一次10之前都會(huì)調(diào)用一次MMC初始化程序。示意性的實(shí)現(xiàn)方式 如下:
[0065] struct mmc | struct mmc cmd *cmd, struct mmc_4ata void (*set_ios)(struct mmc int (*init)(struct mmc *mmc); ? int initialized; //添加 !; static ini ollii£i_startiip{struct mmc *mmc) (ffl卿::->cid[2] :>>:24.) & Oxf); iuitj)art(&mmc->block_dev); #- mftC^Initialized = //添加 leturn 0, ini mrac_init(struct mmc *mmc) { l· if(mmc->initializrf) //添加 ? leturn //添加 err
[0066] 另外,還可以將是否進(jìn)入還原(recovery)模式的判斷方式修改為通過(guò)讀取偏移位 置的裸數(shù)據(jù)來(lái)判斷,而不再通過(guò)開(kāi)機(jī)啟動(dòng)讀取高速緩存( cache)分區(qū)里某文件的方式判斷 是否進(jìn)入還原模式。示意性的實(shí)現(xiàn)方式如下:
[0067] v_eheck-recovery-mode(void) setup recoveryb_env(); #endif
[0068] !' - else if (check_recovery_cTnd_file〇 || check_recoveixj)arai?^mi0| I mwr + else if (check_recoveryjparams_cmdQ| | "溱加 . puts("Recovery command file founded!\n"|; setup-recovery_env〇:
[0069] 下面對(duì)內(nèi)核的啟動(dòng)方式的優(yōu)化進(jìn)行詳細(xì)描述。
[0070] 首先可以減小pty設(shè)備節(jié)點(diǎn)的數(shù)量,使其小于原生Android系統(tǒng)的默認(rèn)值并與所 述車載系統(tǒng)的軟硬件配置適配。在一實(shí)例中,可以將原生Android系統(tǒng)默認(rèn)動(dòng)態(tài)分配的256 個(gè)pty設(shè)備節(jié)點(diǎn)減小至32。進(jìn)一步而言,可以通過(guò)增加啟動(dòng)參數(shù)pty. legacy_count=32來(lái) 實(shí)現(xiàn)。
[0071] 此外,還可以去除內(nèi)核的打印信息,例如可以增加啟動(dòng)參數(shù)quiet來(lái)實(shí)現(xiàn)。
[0072] 另外,還可以延遲內(nèi)核中的initcall機(jī)制,將部分驅(qū)動(dòng)轉(zhuǎn)移至用戶域的啟動(dòng)過(guò)程 再觸發(fā)初始化。
[0073] 另外,還可以對(duì)電源管理芯片(PMIC)的初始化過(guò)程進(jìn)行優(yōu)化,將與車載系統(tǒng)的硬 件配置不相關(guān)的部分跳過(guò)。示意性的實(shí)現(xiàn)方式如下:
[0074] static int hc3589_regulator_probe(struct platform device *pdev) ..Jr I* roister fqgulator */ -: rdev = regulatoi^jegister(<c3589-reg[pde¥->id|5. &pdev->dev, #_除 .+. /* rdev = regulator-i,egister(<c3 589-reg[pdev->id.],,.,藥ρ?群-〉dev, //添加 pdev->dev.pialfbim_data, de¥_getdrvclata(&pdev->dev)); if (IS_ERR(rdev)) { dev_err(&pdev->dev, "failed to register ? 〇s' n", ltc3589_reg[pdev->id].name); return PTR_ERR(rdev).;. :? I //刪除
[0075] + 職加 ,ie35觀_set,?w_rate(福ev,Lffi3 纖 JRRC1R:亂 //刪除 +/*ltc3589_set_slew_rate(rdev,LTC3589 VRRCR SLEW RATE 7P00MV_^S), */ ;/雜加
[0076] 另外,還可以將車載系統(tǒng)的硬件配置以外的設(shè)備驅(qū)動(dòng)裁減掉,也就是將車載系統(tǒng) 并未使用的硬件的設(shè)備驅(qū)動(dòng)移除。例如可以將驅(qū)動(dòng)頂PUT_ISL 29〇23裁減掉,實(shí)現(xiàn)方式可以 是:Disable INPUT一ISL29023。另外,可以將沒(méi)有使用到的LCD驅(qū)動(dòng)裁減掉,例如:
[0077] A· Disable CONFIG_FB_MXC_EPSON_VGA-SYNC_PANEL
[0078] B. Disable CONFIG_FB_MXC_CLAA_WVGA_SYNC_PANEL
[0079] C. Disable CONFIG_FB_MXC_SEIKO_WVGA_SYNC_PANEL
[0080] D.Disable CONFIG-FB_MXC_SII902X
[0081] E. Disable C0NFIG_FB_MXC_CH7026
[0082] F. Disable CONFIG_FB_MXC_EINK_PANEL
[0083] 此夕卜,還可以裁減掉MAX17135, MAG3110,MMA8451驅(qū)動(dòng)。示意性的實(shí)現(xiàn)方式如下·
[0084] Disable MFD_MAX17135, REGULAT0R_MAX17135 '
[0085] Disable sensor drivers MAX17135, MAG3110, MMA8451.
[0086] 此外,還可以將DA9052驅(qū)動(dòng)裁減掉,實(shí)現(xiàn)方式如下:
[0087] Disable all drivers on DA9052〇
[0088] 此外,還可以將以太網(wǎng)(ethernet)驅(qū)動(dòng)裁減掉,實(shí)現(xiàn)方式如下.
[0089] Disable all drivers of ethernet。
[0090] 還可以將APM battery驅(qū)動(dòng)裁減掉,實(shí)現(xiàn)方式如下:
[0091] Remove all APM battery drviers〇
[0092] 還可以將紅外(IR)設(shè)備相關(guān)的設(shè)備驅(qū)動(dòng)裁減掉,實(shí)現(xiàn)方式如下·.
[0093] Disable CONFIG-RC-MAP;
[0094] Disable CONFIG-IR-RC5-DECODER;
[0095] Disable CONFIG-IR-RC6-DECODER;
[0096] Disable CONFIG-IR-JVC-DECODER;
[0097] Disable CONFIG一IR-SONY-DECODER;
[0098] Disable CONFIG-RC-MAP;
[0099] Disable C0NFIG_VIDE0-IR_I2C。
[0100] 還可以將所有CAN相關(guān)的設(shè)備驅(qū)動(dòng)移除,實(shí)現(xiàn)方式如下:
[0101] Disable C0NFIG_CAN, C0NFIG_CAN_RAff and C0NFIG_CAN B〇M
[0102] 還可以將鍵盤驅(qū)動(dòng) KEYBOARD-GPI0 和 KEYB0ARDJ1XC 裁g掉二 n、、
[0103] Disable KEYB0ARD_GP 10 and KEYB0ARD_MXC。 '頭義萬(wàn)式如下:
[0104] 此外,還可以將電源管理模塊DVFS裁減掉。
[0105] 另外,還可以將車載系統(tǒng)未使用的文件系統(tǒng)裁減掉,例如可以將文件系統(tǒng)UBIFS 模塊裁減掉。
[0106] 下面詳細(xì)介紹用戶域啟動(dòng)方式的優(yōu)化。 >
[0107] 首先,可以刪除車載系統(tǒng)未使用的原生Android服務(wù)。例如,可以采用如下方式刪 除相關(guān)的原生Android服務(wù):
[0108] A. remove Headset Observer;
[0109] B. remove HDMI Observer;
[0110] C. remove Dock Observer;
[0111] D. remove Recognition Manager Service;
[0112] E. remove Vibrator Service;
[0113] F. remove Backup Service〇
[0114] 另外,可以將Entropy Service中對(duì)文件的讀寫(xiě)修改為異步的,以防止阻塞。
[0115] 另外,可以將Package Manager Service對(duì)配置文件的寫(xiě)操作修改為異步的,以防 止阻塞。
[0116] 此外,還可以取消對(duì)/vendor/app目錄的掃描。
[0117] 另外,可以對(duì)預(yù)加載的類列表進(jìn)行裁減優(yōu)化,將車載系統(tǒng)未使用的類從預(yù)加載的 類列表中刪除,例如:
[0118] A. remove javax. net. ssl. ^
[0119] B. remove libcore. *
[0120] C. remove org. apache, http. conn. ssl. ^
[0121] D. remove org. apache, http. impl. client. Abstract Http Client
[0122] E. remove android, webkit. Web View Core
[0123] F. remove android, media. Exif Interface
[0124] G. remove Bluetooth class;
[0125] 此外,可以將一些較為耗時(shí)的操作從預(yù)加載類時(shí)執(zhí)行轉(zhuǎn)移到創(chuàng)建對(duì)象時(shí)再執(zhí)行。
[0126] 此外,還可以調(diào)整垃圾收集(GC)的閾值,使其大于原生Android系統(tǒng)的默認(rèn)值,以 減小垃圾收集的次數(shù)。需要說(shuō)明的是,該調(diào)整僅影響預(yù)加載類階段的垃圾收集操作,在預(yù)加 載類結(jié)束后,垃圾收集的閾值將被調(diào)回默認(rèn)值。
[0127] 另外,可以調(diào)整用戶域中各個(gè)應(yīng)用的啟動(dòng)順序,首先啟動(dòng)桌面啟動(dòng)器(launcher ) 和系統(tǒng)用戶界面(systemui),其余的應(yīng)用(例如電話、拼音輸入法等)例如可以延遲2秒后 再啟動(dòng)。而在原生Android系統(tǒng)中,上述全部應(yīng)用都是同時(shí)啟動(dòng)的,影響了啟動(dòng)速度。
[0128] 另外還可以對(duì)啟動(dòng)腳本(init.rc)進(jìn)行優(yōu)化,具體而言,可以包括如下內(nèi)容:
[0129] A.刪除車載系統(tǒng)不需要的操作,如不需要的環(huán)境變量的設(shè)置等;
[0130] B.將對(duì)/dev/下設(shè)備節(jié)點(diǎn)權(quán)限的修改全部移到uevent. rc文件中;
[0131] C·預(yù)先在uramdisk中創(chuàng)建掛載點(diǎn)目錄,而不在啟動(dòng)時(shí)動(dòng)態(tài)創(chuàng)建。
[0132]針對(duì) Package Manager service 的優(yōu)化可以包括:
[0133] A.用戶(user)版本針對(duì)/SyStem/app下的apk應(yīng)用不再做odex文件的生成,而 是在編譯時(shí)就生成odex文件;
[0134] B.分階段掃描apk應(yīng)用,重要的apk應(yīng)用優(yōu)先掃描加載,例如先系統(tǒng)級(jí),再非系統(tǒng) 級(jí)。
[0135]另外,可以裁減掉以太網(wǎng)服務(wù)。
[0136] 另外,還可以移除Sensor Manager和Battery Service內(nèi)部的所有操作,并保留 接口。 '
[0137] 此外,可以關(guān)閉Java本地調(diào)用(JNI)的檢查,實(shí)現(xiàn)方式如下:
[0138] JNI check off。
[0139] 對(duì)于桌面啟動(dòng)器(launcher)應(yīng)用的優(yōu)化可以包括:
[0140] A.在不影響UI效果前提下,壓縮界面圖片資源,使得界面圖片資源所占空間盡可 能??;
[0141] B.耗時(shí)的操作轉(zhuǎn)移至π界面顯示出來(lái)后再執(zhí)行。
[0142]綜上,本實(shí)施例的快速啟動(dòng)方法在原生Android系統(tǒng)的基礎(chǔ)上并沒(méi)有增加額外的 啟動(dòng)階段,沒(méi)有減少或者重排原始的啟動(dòng)次序,改良后的系統(tǒng)維護(hù)和升級(jí)工作與優(yōu)化前相 比并沒(méi)有變化,引入的具體優(yōu)化方法都易于理解、移植以及維護(hù)。
[0143]本發(fā)明雖然以較佳實(shí)施例公開(kāi)如上,但其并不是用來(lái)限定本發(fā)明,任何本領(lǐng)域技 術(shù)人員在不脫離本發(fā)明的精神和范圍內(nèi),都可以做出可能的變動(dòng)和修改,因此本發(fā)明的保 護(hù)泡圍應(yīng)當(dāng)以本發(fā)明權(quán)利要求所界定的范圍為準(zhǔn)。
【權(quán)利要求】
1. 一種基于Android系統(tǒng)的車載系統(tǒng)的快速啟動(dòng)方法,其特征在于,包括: 對(duì)原生Android系統(tǒng)的引導(dǎo)程序、內(nèi)核和用戶域的啟動(dòng)方式進(jìn)行優(yōu)化,以使優(yōu)化后的 啟動(dòng)時(shí)間小于原生Android系統(tǒng)的默認(rèn)啟動(dòng)時(shí)間; 以優(yōu)化后的方式加載并啟動(dòng)所述引導(dǎo)程序; 以優(yōu)化后的方式加載并啟動(dòng)所述內(nèi)核; 以優(yōu)化后的方式加載并啟動(dòng)所述用戶域。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,對(duì)所述引導(dǎo)程序、內(nèi)核和用戶域的啟動(dòng)方 式進(jìn)行優(yōu)化包括:根據(jù)所述車載系統(tǒng)的軟硬件配置對(duì)所述引導(dǎo)程序、內(nèi)核和用戶域的啟動(dòng) 方式進(jìn)行優(yōu)化。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,根據(jù)所述車載系統(tǒng)的軟硬件配置對(duì)所述 引導(dǎo)程序的啟動(dòng)方式進(jìn)行優(yōu)化包括以下操作中的一項(xiàng)或多項(xiàng): 裁減所述引導(dǎo)程序中與網(wǎng)絡(luò)相關(guān)的模塊; 減小讀取uramdisk. img區(qū)域和ulmage區(qū)域的空間,使其小于原生Android系統(tǒng)的默 認(rèn)值; 減小MMC驅(qū)動(dòng)中發(fā)送命令的延遲時(shí)間,使其小于原生Android系統(tǒng)的默認(rèn)值并與所述 車載系統(tǒng)的硬件配置適配。
4. 根據(jù)權(quán)利要求2所述的方法,其特征在于,對(duì)所述引導(dǎo)程序的啟動(dòng)方式進(jìn)行優(yōu)化還 包括以下操作中的一項(xiàng)或多項(xiàng): 去除加載所述內(nèi)核之前的等待時(shí)間; 對(duì)于同一 MMC硬件僅調(diào)用一次MMC初始化程序; 將是否進(jìn)入還原模式的判斷方式修改為通過(guò)讀取預(yù)設(shè)偏移位置的裸數(shù)據(jù)來(lái)判斷。
5. 根據(jù)權(quán)利要求2所述的方法,其特征在于,根據(jù)所述車載系統(tǒng)的軟硬件配置對(duì)所述 內(nèi)核的啟動(dòng)方式進(jìn)行優(yōu)化包括以下操作中的一項(xiàng)或多項(xiàng): 減小pty設(shè)備節(jié)點(diǎn)的數(shù)量,使其小于原生Android系統(tǒng)的默認(rèn)值并與所述車載系統(tǒng)的 軟硬件配置適配; 延遲所述內(nèi)核中的initcall機(jī)制,以將所述內(nèi)核的多個(gè)驅(qū)動(dòng)中的一部分轉(zhuǎn)移至所述 用戶域的啟動(dòng)過(guò)程進(jìn)行初始化; 對(duì)電源管理芯片的初始化過(guò)程進(jìn)行優(yōu)化,以去除與所述車載系統(tǒng)的硬件配置不相關(guān)的 部分; 裁減所述車載系統(tǒng)的硬件配置以外的設(shè)備驅(qū)動(dòng); 裁減所述車載系統(tǒng)未使用的文件系統(tǒng)。
6. 根據(jù)權(quán)利要求2所述的方法,其特征在于,對(duì)所述內(nèi)核的啟動(dòng)方式進(jìn)行優(yōu)化還包括: 去除內(nèi)核的打印信息。
7. 根據(jù)權(quán)利要求2所述的方法,其特征在于,根據(jù)所述車載系統(tǒng)的軟硬件配置對(duì)所述 用戶域的啟動(dòng)方式進(jìn)行優(yōu)化包括以下操作中的一項(xiàng)或多項(xiàng): 刪除所述車載系統(tǒng)未使用的原生Android服務(wù); 對(duì)預(yù)加載的類列表做裁減優(yōu)化,將所述車載系統(tǒng)未使用的類從所述預(yù)加載的類列表中 刪除; 裁減以太網(wǎng)服務(wù); 移除Sensor Manager和Battery Service內(nèi)部的全部操作并保留接口。
8.根據(jù)權(quán)利要求2所述的方法,其特征在于,對(duì)所述用戶域的啟動(dòng)方式進(jìn)行優(yōu)化還包 括以下操作中的一項(xiàng)或多項(xiàng): 將Entropy Service對(duì)文件的讀寫(xiě)修改為異步的; 將Package Manager Service對(duì)配置文件的寫(xiě)操作修改為異步的; 增大垃圾收集的閾值,以減小垃圾收集的次數(shù); 將桌面啟動(dòng)器和系統(tǒng)用戶界面設(shè)置為優(yōu)先于其他應(yīng)用啟動(dòng); 將init. rc文件中對(duì)/dev/路徑下設(shè)備節(jié)點(diǎn)權(quán)限的修改轉(zhuǎn)移至uevent. rc文件中; 預(yù)先在uramdisk中創(chuàng)建掛載點(diǎn)目錄,以避免動(dòng)態(tài)創(chuàng)建; 關(guān)閉Java本地調(diào)用的檢查; 壓縮所述桌面啟動(dòng)器中的界面圖片資源。
【文檔編號(hào)】G06F9/445GK104252363SQ201310255835
【公開(kāi)日】2014年12月31日 申請(qǐng)日期:2013年6月25日 優(yōu)先權(quán)日:2013年6月25日
【發(fā)明者】王磊, 趙亞立 申請(qǐng)人:上海博泰悅臻電子設(shè)備制造有限公司