一種基于Android系統(tǒng)的系統(tǒng)服務(wù)啟動方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及消費電子技術(shù)領(lǐng)域,尤其涉及一種基于Android系統(tǒng)的系統(tǒng)服務(wù)啟動方法及系統(tǒng)。
【背景技術(shù)】
[0002]系統(tǒng)服務(wù)專指Androi d系統(tǒng)中sy s tem_server進程中啟動的各種java層服務(wù),這些服務(wù)均通過其對應(yīng)的Manager對象提供API接口給應(yīng)用程序或其它模塊使用,使得應(yīng)用程序和系統(tǒng)其它模塊可以通過該服務(wù)訪問應(yīng)用程序不能直接訪問的系統(tǒng)資源或底層接口。
[0003]隨著近年消費電子領(lǐng)域核心處理單元64bit的發(fā)展趨勢,Android發(fā)展到5.0版本已經(jīng)開始逐步支持64bit運算。然而各智能終端(手機、電視、車載等)廠商,針對android的定制化開發(fā)大多基于32bit開發(fā)。對于應(yīng)用程序來講,部分純java的應(yīng)用程序可以直接64bit運行,含Native(本地C/C++)庫可以兼容32bit運行,或作少量修改即可正常運行。
[0004]但是,從android開始到當(dāng)前的5.0階段,許多廠商經(jīng)過多年開發(fā)積累、重構(gòu)的比較穩(wěn)定的系統(tǒng)服務(wù)由于某種原因需要以32bit運行。雖然Android支持64/32的各種搭配的兼容運行模式,但一般情況下系統(tǒng)服務(wù)都是運行在一個叫SystemServer的進程中,該進程只能運行在3213;11:或者6413;[1:模式下,不能同時支持6413;[1:和3213;[1:服務(wù)。
[0005]定制系統(tǒng)服務(wù)僅支持32bit運行,但須滿足整個系統(tǒng)64it運行,采用應(yīng)用程序服務(wù)類型,啟動時機較晚,導(dǎo)致開機時間變長,許多開機啟動應(yīng)用程序運行異常;
定制系統(tǒng)服務(wù)在SystemServer中啟動運行,導(dǎo)致SystemServer啟動時間變長,進一步導(dǎo)致開機時間變長。
[0006]因此,現(xiàn)有技術(shù)還有待于改進和發(fā)展。
【發(fā)明內(nèi)容】
[0007]鑒于現(xiàn)有技術(shù)的不足,本發(fā)明目的在于提供一種基于Android系統(tǒng)的系統(tǒng)服務(wù)啟動方法及系統(tǒng),旨在解決現(xiàn)有技術(shù)中定制系統(tǒng)服務(wù)僅支持32bit,不能與系統(tǒng)64bit運行,同時定制系統(tǒng)服務(wù)啟動時間長的缺陷。
[0008]本發(fā)明的技術(shù)方案如下:
一種基于Android系統(tǒng)的系統(tǒng)服務(wù)啟動方法,其中,方法包括:
A、創(chuàng)建一個模擬system_server進程環(huán)境的第一軟件程序,在第一軟件程序創(chuàng)建定制服務(wù)對象和Android原生服務(wù)對象,添加服務(wù)到系統(tǒng)服務(wù)列表并執(zhí)行第一軟件程序;
B、將第一軟件程序添加到android_aosp源碼,構(gòu)建為一個系統(tǒng)jar包,添加到系統(tǒng)啟動加載庫B00T_CLASSPATH中;
C、創(chuàng)建第一軟件程序的啟動腳本,并在系統(tǒng)啟動腳本中添加啟動第一軟件程序的腳本內(nèi)容,第一軟件程序在在特定的啟動時機啟動;
D、Android系統(tǒng)開機時,第一軟件程序和Android系統(tǒng)自帶的進程system_server并行啟動運行。
[0009]所述的基于Android系統(tǒng)的系統(tǒng)服務(wù)啟動方法,其中,所述步驟A具體包括:
Al、創(chuàng)建一個模擬system_server進程環(huán)境的第一軟件程序;
A2、創(chuàng)建第一軟件程序的主循環(huán)體;
A3、在第一軟件程序上的主程序上分別創(chuàng)建Android系統(tǒng)上下文對象、定制服務(wù)對象和Android原生服務(wù)對象;
A4、檢測servicemanager進程,判斷第一軟件程序是否可以添加第一軟件程序服務(wù)到系統(tǒng)服務(wù)列表,若可以添加,則添加第一軟件程序服務(wù)到系統(tǒng)服務(wù)列表;
A5、執(zhí)行第一軟件程序主程序的主循環(huán)。
[0010]所述的基于Android系統(tǒng)的系統(tǒng)服務(wù)啟動方法,其中,所述步驟C具體包括:
Cl、創(chuàng)建第一軟件程序的啟動腳本,使啟動腳本的進程以32bit運行;
C2、在Android系統(tǒng)啟動腳本中添加啟動第一軟件程序的腳本內(nèi)容,第一軟件程序在開機時由in i t進程啟動。
[0011]所述的基于Android系統(tǒng)的系統(tǒng)服務(wù)啟動方法,其中,所述步驟C具體包括:
C11、創(chuàng)建第一軟件程序的啟動腳本,啟動腳本的進程依賴Android系統(tǒng)的系統(tǒng)屬性sys.starts的值,啟動腳本的進程以32bit運行;
C12、在Andro i d系統(tǒng)中添加啟動第一軟件程序的腳本內(nèi)容;
C13、在檢測到Android系統(tǒng)的系統(tǒng)屬性sys.starts的值為I時,啟動第一軟件程序。
[0012]所述的基于Android系統(tǒng)的系統(tǒng)服務(wù)啟動方法,其中,所述步驟D具體包括:
Dl、Android系統(tǒng)開機時,android系統(tǒng)原生的啟動流程不改變,init進程分別以64bit/32bit 啟動兩個zygote 進程分別為zygote64和zygote;
D2、Android系統(tǒng)默認(rèn)64bit,zygote64 模擬系統(tǒng)核心服務(wù)進程system_server,zyogte進程兼容32bit應(yīng)用程序運行;
D3、32bit的第一軟件程序和Android系統(tǒng)自帶的64bit的進程system_server并行啟動運行。
[0013]一種基于Android系統(tǒng)的系統(tǒng)服務(wù)啟動系統(tǒng),其中,系統(tǒng)包括:
程序創(chuàng)建模塊,用于創(chuàng)建一個模擬system_server進程環(huán)境的第一軟件程序,在第一軟件程序創(chuàng)建定制服務(wù)對象和Android原生服務(wù)對象,添加服務(wù)到系統(tǒng)服務(wù)列表并執(zhí)行第一軟件程序;
程序添加模塊,用于將第一軟件程序添加到android_aosp源碼,構(gòu)建為一個系統(tǒng)jar包,添加到系統(tǒng)啟動加載庫B00T_CLASSPATH中;
啟動腳本創(chuàng)建模塊,用于創(chuàng)建第一軟件程序的啟動腳本,并在系統(tǒng)啟動腳本中添加啟動第一軟件程序的腳本內(nèi)容,第一軟件程序在在特定的啟動時機啟動;
并行運行模塊,用于Android系統(tǒng)開機時,第一軟件程序和Android系統(tǒng)自帶的進程system_server并行啟動運行。
[0014]所述的基于Androi d系統(tǒng)的系統(tǒng)服務(wù)啟動系統(tǒng),其中,所述程序創(chuàng)建模塊具體包括:
軟件程序創(chuàng)建單元,用于創(chuàng)建一個模擬system_server進程環(huán)境的第一軟件程序;
主循環(huán)創(chuàng)建單元,用于創(chuàng)建第一軟件程序的主循環(huán)體;
服務(wù)對象創(chuàng)建單元,用于在第一軟件程序上的主程序上分別創(chuàng)建Android系統(tǒng)上下文對象、定制服務(wù)對象和Andro id原生服務(wù)對象;
檢測與判斷單元,用于檢測servicemanager進程,判斷第一軟件程序是否可以添加第一軟件程序服務(wù)到系統(tǒng)服務(wù)列表,若可以添加,則添加第一軟件程序服務(wù)到系統(tǒng)服務(wù)列表;執(zhí)行單元,用于執(zhí)行第一軟件程序主程序的主循環(huán)。
[0015]所述的基于Android系統(tǒng)的系統(tǒng)服務(wù)啟動系統(tǒng),其中,所述啟動腳本創(chuàng)建模塊具體包括:
第一啟動腳本創(chuàng)建單元,用于創(chuàng)建第一軟件程序的啟動腳本,使啟動腳本的進程以32bit運行;
第一啟動腳本添加單元,用于在Android系統(tǒng)啟動腳本中添加啟動第一軟件程序的腳本內(nèi)容,第一軟件程序在開機時由ini t進程啟動。
[0016]所述的基于Android系統(tǒng)的系統(tǒng)服務(wù)啟動系統(tǒng),其中,所述啟動腳本創(chuàng)建模塊具體包括:
第二啟動腳本創(chuàng)建單元,用于創(chuàng)建第一軟件程序的啟動腳本,啟動腳本的進程依賴Android系統(tǒng)的系統(tǒng)屬性sys.starts的值,啟動腳本的進程以32bit運行;
第二啟動腳本添加單元,用于在Android系統(tǒng)中添加啟動第一軟件程序的腳本內(nèi)容; 檢測與啟動單元,用于在檢測到Android系統(tǒng)的系統(tǒng)屬性sys.starts的值為I時,啟動第一軟件程序。
[0017]所述的基于Android系統(tǒng)的系統(tǒng)服務(wù)啟動系統(tǒng),其中,所述并行運行模塊具體包括:
進程啟動單元,用于Android系統(tǒng)開機時,android系統(tǒng)原生的啟動流程不改變,init進程分別以64bit/32bit啟動兩個zygote進程分別為zygote64和zygote;
進程運行單元,用于Android系統(tǒng)默認(rèn)64bit,zygote64模擬系統(tǒng)核心服務(wù)進程system_server,zyogte進程兼容32bit應(yīng)用程序運行;
并行啟動單元,用于32bit的第一軟件程序和Android系統(tǒng)自帶的64bit的進程system_server并行啟動運行。
[0018]有益效果:本發(fā)明提供的基于Android系統(tǒng)的系統(tǒng)服務(wù)啟動方法,可以優(yōu)化Android系統(tǒng)啟動時間;實現(xiàn)Android系統(tǒng)服務(wù)64bit/32bit兼容運行;縮短Android定制系統(tǒng)服務(wù)延長系統(tǒng)啟動時間。
【附圖說明】
[0019]圖1為本發(fā)明的一種基于Android系統(tǒng)的系統(tǒng)服務(wù)啟動方法的較佳實施例的流程圖。
[0020]圖2為本發(fā)明的一種基于Android系統(tǒng)的系統(tǒng)服務(wù)啟動系統(tǒng)的較佳實施例的功能原理框圖。
【具體實施方式】
[0021]為使本發(fā)明的目的、技術(shù)方案及效果更加清楚、明確,以下對本發(fā)明進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0022]本發(fā)明提供了一種基于Android系統(tǒng)的系統(tǒng)服務(wù)啟動方法的較佳實施例的流程圖,如圖1所示,所述方法包括:
步驟3100、創(chuàng)建一個模擬87816111_861^61'進程環(huán)境的第一軟件程序,在第一軟件程序創(chuàng)建定制服務(wù)對象和Android原生服務(wù)對象