




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
/""應(yīng)用安裝過(guò)程以及默認(rèn)安裝路徑
分類:
一:安裝過(guò)程是類似或的文件格式。通過(guò)將文件直接傳到模擬器或手機(jī)中執(zhí)行即可安裝。應(yīng)用安裝有如下四種方式
1.
系統(tǒng)應(yīng)用安裝――開(kāi)機(jī)時(shí)完成,沒(méi)有安裝界面
2.
網(wǎng)絡(luò)下載應(yīng)用安裝――通過(guò)應(yīng)用完成,沒(méi)有安裝界面
3.
工具安裝――沒(méi)有安裝界面。
4.
第三方應(yīng)用安裝――通過(guò)卡里的文件安裝,有安裝界面,由應(yīng)用處理安裝及卸載過(guò)程的界面。
應(yīng)用安裝的流程及路徑
應(yīng)用安裝涉及到如下幾個(gè)目錄:
系統(tǒng)自帶的應(yīng)用程序,無(wú)法刪除
用戶程序安裝的目錄,有刪除權(quán)限。
安裝時(shí)把文件復(fù)制到此目錄
存放應(yīng)用程序的數(shù)據(jù)
將中的文件安裝到目錄下(文件是虛擬機(jī)的可執(zhí)行文件,其大小約為原始文件大小的四分之一)
安裝過(guò)程:復(fù)制安裝包到目錄下,解壓并掃描安裝包,把文件(字節(jié)碼)保存到目錄,并目錄下創(chuàng)建對(duì)應(yīng)的應(yīng)用數(shù)據(jù)目錄。
卸載過(guò)程:刪除安裝過(guò)程中在上述三個(gè)目錄下創(chuàng)建的文件及目錄。
一、系統(tǒng)應(yīng)用安裝:
處理各種應(yīng)用的安裝,卸載,管理等工作,開(kāi)機(jī)時(shí)由啟動(dòng)此服務(wù)
(源文件路徑:\\\\\\\\)
服務(wù)啟動(dòng)的流程:
1.首先掃描安裝“\”目錄下的包
1.(,
|);
2.第二步掃描安裝“\”目錄下的各個(gè)系統(tǒng)應(yīng)用
(,);
3.第三步掃描“\”目錄,即用戶安裝的第三方應(yīng)用
(,0,);
4.第四步掃描"\"目錄,即安裝保護(hù)的文件(目前沒(méi)有遇到過(guò)此類的應(yīng)用)。
(,0,|);
安裝應(yīng)用的過(guò)程
1(,,)遍歷安裝指定目錄下的文件
2(,
,,,
)
安裝文件
3(
,,,
,,)
通過(guò)解析安裝包獲取到安裝包的信息結(jié)構(gòu)
4(,
);
實(shí)現(xiàn)文件復(fù)制的安裝過(guò)程
(源文件路徑:\\\\)
二、從上下載應(yīng)用:
應(yīng)用需要使用賬戶登錄才可以使用,選擇某一應(yīng)用后,開(kāi)始下載安裝包,此過(guò)程中,在手機(jī)的信號(hào)區(qū)有進(jìn)度條提示,下載完成后,會(huì)自動(dòng)調(diào)用的接口安裝,調(diào)用接口如下:
(,)
:文件下載完成后保存的路徑
:處理返回的安裝結(jié)果
:安裝的參數(shù),從上下載的應(yīng)用,安裝參數(shù)為()
接口函數(shù)的安裝過(guò)程:
1(
,,,
)
:安裝完成后此名稱保存在里,一般為,不是關(guān)鍵參數(shù)
2=(,);
把文件復(fù)制到臨時(shí)目錄下的臨時(shí)文件
3(,
,,
,)
解析臨時(shí)文件,獲取應(yīng)用包名=(
(),0);
4.判斷如果帶有參數(shù),則調(diào)用(,
,
,,
,,,
)
5.如果沒(méi)有,則調(diào)用(,
,
,,
,,,
);
6(
,,,
,,)
以后的流程,與開(kāi)機(jī)時(shí)的應(yīng)用安裝流程相同。
三、從工具安裝
()是自帶的管理設(shè)備的工具,通過(guò)命令行的方式也可以為手機(jī)或模擬器安裝應(yīng)用,其入口函數(shù)源文件為
(源文件路徑:\\\\\\\\\\)
命令行的形式為<>,還可以帶安裝參數(shù)如:""""""""
函數(shù)()中判斷參數(shù)
""――
""——
""——
""——
我們常用的參數(shù)為,表示覆蓋安裝手機(jī)上已安裝的同名應(yīng)用。從上下載的應(yīng)用,也是直接傳入這個(gè)參數(shù)安裝的。
與調(diào)用同樣的接口完成應(yīng)用安裝。
(,)
四、第三方應(yīng)用安裝――通過(guò)卡里的文件安裝
把安裝包保存在卡中,從手機(jī)里訪問(wèn)卡中的安裝包,點(diǎn)擊就可以啟動(dòng)安裝界面,系統(tǒng)應(yīng)用處理這種方式下的安裝及卸載界面流程,如下圖:
負(fù)責(zé)解析包,判斷是否是可用的文件
創(chuàng)建臨時(shí)安裝文件
并啟動(dòng)安裝確認(rèn)界面,列出解析得到的該應(yīng)用基本信息。如果手機(jī)上已安裝有同名應(yīng)用,則需要用戶確認(rèn)是否要替換安裝。
確認(rèn)安裝后,啟動(dòng),調(diào)用安裝接口完成安裝。
(,);
其它:
1.的內(nèi)部類實(shí)現(xiàn)了監(jiān)聽(tīng)目錄的功能:當(dāng)把某個(gè)拖到目錄下時(shí),可以直接調(diào)用完成安裝。
2.手機(jī)數(shù)據(jù)區(qū)目錄“”文件中,包含了手機(jī)上所有已安裝應(yīng)用的基本信息,如安裝路徑,申請(qǐng)的等信息。二:更改默認(rèn)安裝路徑
如果你是一個(gè)應(yīng)用開(kāi)發(fā)者,沒(méi)用系統(tǒng)全套代碼,你只想更改你的的默認(rèn)安裝路徑的話,可以按下面方法來(lái)更改:在文件標(biāo)簽中添加屬性這個(gè)屬性設(shè)置的是默認(rèn)安裝位置,共有三個(gè)有效值,、、對(duì)應(yīng)表表示自動(dòng),由系統(tǒng)決定安裝位置,如果系統(tǒng)手機(jī)內(nèi)存足夠,默認(rèn)安裝在手機(jī)內(nèi)存里,如果手機(jī)內(nèi)在不夠,則會(huì)安裝在T卡內(nèi)安裝在手機(jī)內(nèi)存安裝在外部存儲(chǔ)中012,.
<"""""""1""1.0">如果你是一個(gè)手機(jī)方案開(kāi)發(fā)者,能改層的代碼,你希望下載到手機(jī)里的都默認(rèn)優(yōu)先安裝到T卡的話,可以按下面方法更改:在文件里,將
這個(gè)值,改為,就可以了.默認(rèn)下載就會(huì)下到T卡里卡不存在或者滿了時(shí),才會(huì)下到手機(jī)內(nèi)部.或者如果在應(yīng)用的里,指定了屬性為手機(jī)內(nèi)部存儲(chǔ)的話,是會(huì)存在手機(jī)內(nèi)部的.沒(méi)指這定的話這個(gè)值指定什么,就下到哪里安裝在T卡里的應(yīng)用,有幾個(gè)缺點(diǎn):
1:因?yàn)檠b載T卡是在系統(tǒng)啟動(dòng)完成后,才開(kāi)始裝載的.所以如果應(yīng)用裝在T卡里的話,那么它是收不到開(kāi)機(jī)啟動(dòng)完成的這個(gè)廣播的
2:如果T卡損壞或者T卡撥出來(lái)了,那么裝在T卡里的應(yīng)用是啟動(dòng)不了的.系統(tǒng)應(yīng)用安裝的詳細(xì)過(guò)程,老羅有篇文章寫(xiě)得很透徹,這里引用下:系統(tǒng)在啟動(dòng)的過(guò)程中,會(huì)啟動(dòng)一個(gè)應(yīng)用程序管理服務(wù),這個(gè)服務(wù)負(fù)責(zé)掃描系統(tǒng)中特定的目錄,找到里面的應(yīng)用程序文件,即以為后綴的文件,然后對(duì)這些文件進(jìn)解析,得到應(yīng)用程序的相關(guān)信息,完成應(yīng)用程序的安裝過(guò)程,本文將詳細(xì)分析這個(gè)過(guò)程。
應(yīng)用程序管理服務(wù)安裝應(yīng)用程序的過(guò)程,其實(shí)就是解析析應(yīng)用程序配置文件的過(guò)程,并從里面得到得到應(yīng)用程序的相關(guān)信息,例如得到應(yīng)用程序的組件、、和等信息,有了這些信息后,通過(guò)這個(gè)服務(wù),我們就可以在系統(tǒng)中正常地使用這些應(yīng)用程序了。
應(yīng)用程序管理服務(wù)是系統(tǒng)啟動(dòng)的時(shí)候由組件啟動(dòng)的,啟后它就會(huì)執(zhí)行應(yīng)用程序安裝的過(guò)程,因此,本文將從啟動(dòng)服務(wù)的過(guò)程開(kāi)始分析系統(tǒng)中的應(yīng)用程序安裝的過(guò)程。
應(yīng)用程序管理服務(wù)從啟動(dòng)到安裝應(yīng)用程序的過(guò)程如下圖所示:
下面我們具體分析每一個(gè)步驟。
1.
這個(gè)函數(shù)定義在文件中:[]
""\o""""\o""
{
1([]
);
([]
)
{
1();
}
}
組件是由進(jìn)程負(fù)責(zé)啟動(dòng)的,啟動(dòng)的時(shí)候就會(huì)調(diào)用它的函數(shù),這個(gè)函數(shù)主要調(diào)用了方法1來(lái)做一些系統(tǒng)初始化的工作。
2.1
這個(gè)函數(shù)是一個(gè)方法,實(shí)現(xiàn)在
文件中:[]
""\o""""\o""
{
"C"
();
1(*
,
)
{
();
}
/*
*
.
*/
[]
=
{
/*
,
,
*/
{
"1",
"([;)V",
(*)
1
},
};
(*
)
{
(,
"",
,
());
}
};
這個(gè)函數(shù)很簡(jiǎn)單,只是調(diào)用了函數(shù)來(lái)進(jìn)一步執(zhí)行操作。
3.
函數(shù)實(shí)現(xiàn)在庫(kù)中,源代碼位于文件中:[]
""\o""""\o""
"C"
()
{
("
()");
<>
(());
<>
=
();
(":
\n",
());
<>
=
();
>()->(,
(),
0);
[];
("",
,
"1");
((,
"1")
0)
{
();
}
();
,
't
,
(>())
{
();
();
();
();
}
.
.
's
(),
.
("
:
.\n");
*
=
();
("
:
.\n");
>("",
"2");
,
.
,
.
(>())
{
("
:
.\n");
()->();
()->();
("
:
.\n");
}
;
}
這個(gè)函數(shù)首先會(huì)初始化、、、、和這幾個(gè)服務(wù),然后就通過(guò)系統(tǒng)全局唯一的實(shí)例變量的來(lái)調(diào)用的2函數(shù)了。關(guān)于這個(gè)實(shí)例變量的相關(guān)資料,可能參考前面一篇文章""應(yīng)用程序進(jìn)程啟動(dòng)過(guò)程的源代碼分析一文。
4.
這個(gè)函數(shù)定義在文件中:[]
""\o""""\o""/*
*
a
.
*/
(
*
,
*
)
{
*
;
;
;
=
();
(
)
;
=
(,
);
(
)
{
(":
''\n",
);
;
}
=
>(,
,
"()V");
(
)
{
(":
\n",
,
);
;
}
>(,
);
;
}
這個(gè)函數(shù)調(diào)用由參數(shù)指定的類的靜態(tài)成員函數(shù),這個(gè)靜態(tài)成員函數(shù)是由參數(shù)指定的。上面?zhèn)鬟M(jìn)來(lái)的參數(shù)的值為"",而參數(shù)的值為"2",因此,接下來(lái)就會(huì)調(diào)用類的2函數(shù)了。
5.
2
這個(gè)函數(shù)定義在文件中:[]
""\o""""\o""
{
2()
{
(,
"
!");
=
();
("");
();
}
}
這個(gè)函數(shù)創(chuàng)建了一個(gè)線程,服務(wù)就是這個(gè)線程中啟動(dòng)的了。這里調(diào)用了實(shí)例的函數(shù)之后,下面就會(huì)執(zhí)行這個(gè)實(shí)例的函數(shù)了。
6.
這個(gè)函數(shù)定義在文件中:[]
""\o""""\o""
{
()
{
=
;
...
{
(,
"
");
=
(,
);
}
(
e)
{
("",
"
",
e);
}
}
}
這個(gè)函數(shù)除了啟動(dòng)服務(wù)之外,還啟動(dòng)了其它很多的服務(wù),例如在前面學(xué)習(xí)和的幾篇文章中經(jīng)??吹降姆?wù),有興趣的讀者可以自己研究一下。
7.
這個(gè)函數(shù)定義在文件中:[]
""\o""""\o""
{
(
,
)
{
m
=
(,
);
("",
m);
m;
}
}
這個(gè)函數(shù)創(chuàng)建了一個(gè)服務(wù)實(shí)例,然后把這個(gè)服務(wù)添加到中去,是系統(tǒng)進(jìn)程間通信機(jī)制的守護(hù)進(jìn)程,負(fù)責(zé)管理系統(tǒng)中的對(duì)象,具體可以參考""淺談成為進(jìn)程間通信()機(jī)制守護(hù)進(jìn)程之路一文。
在創(chuàng)建這個(gè)服務(wù)實(shí)例時(shí),會(huì)在類的構(gòu)造函數(shù)中開(kāi)始執(zhí)行安裝應(yīng)用程序的過(guò)程:[]
""\o""""\o""
{
(
,
)
{
()
{
()
{
=
();
=
(,
"");
=
(,
"");
=
(,
"");
=
((),
"");
=
(,
"");
(
).
=
(
(),
,
);
();
(,
|
,
|
,
0);
.
=
((),
"");
=
(
(),
,
);
();
(,
|
,
,
0);
.
=
("");
=
(
(),
,
);
();
(,
|
,
,
0);
=
(
(),
,
);
();
(,
0,
,
0);
=
(
(),
,
);
();
(,
,
,
0);
}
}
}
}
這里會(huì)調(diào)用函數(shù)來(lái)掃描移動(dòng)設(shè)備上的下面這五個(gè)目錄中的文件:
8.
這個(gè)函數(shù)定義在文件中:[]
""\o""""\o""
{
(
,
,
,
)
{
[]
=
();
i;
(0;
i<;
)
{
=
(,
[i]);
(([i]))
{
's
;
}
=
(,
,
,
);
't
.
(
(
&
)
0
)
{
(,
"
"
+
);
();
}
}
}
}
對(duì)于目錄中的每一個(gè)文件,如果是以后作為后綴名,那么就調(diào)用函數(shù)來(lái)對(duì)它進(jìn)行解析和安裝。
9.
這個(gè)函數(shù)定義在文件中:[]
""\o""""\o""
{
(
,
,
,
)
{
=
();
;
=
();
=
(,
,
,
);
(,
,
|
,
);
}
}
這個(gè)函數(shù)首先會(huì)為這個(gè)文件創(chuàng)建一個(gè)實(shí)例,接著調(diào)用這個(gè)實(shí)例的函數(shù)來(lái)對(duì)這個(gè)文件進(jìn)行解析。這個(gè)函數(shù)最后還會(huì)調(diào)用另外一個(gè)版本的函數(shù)把來(lái)解析后得到的應(yīng)用程序信息保存在中。
10.
這個(gè)函數(shù)定義在文件中:[]
""\o""""\o""
{
(
,
,
,
)
{
=
();
=
;
=
;
=
;
{
=
();
=
();
(
0)
{
=
(,
"");
=
;
}
{
}
}
(
e)
{
}
[]
=
[1];
=
;
=
;
{
:
.
=
(,
,
);
=
(,
,
,
);
}
(
e)
{
}
();
();
=
;
=
;
=
;
=
;
=
;
;
}
}
每一個(gè)文件都是一個(gè)歸檔文件,它里面包含了應(yīng)用程序的配置文件,這里主要就是要對(duì)這個(gè)配置文件就行解析了,從歸檔文件中得到這個(gè)配置文件后,就調(diào)用另一外版本的函數(shù)對(duì)這個(gè)應(yīng)用程序進(jìn)行解析了:[]
""\o""""\o""
{
(
,
,
,
[]
)
,
{
=
(,
,
,
);
=
();
;
=
(,
);
((())
(
()
>
))
{
(
)
{
;
}
=
();
((""))
{
((,
,
,
,
,
))
{
;
}
}
((""))
{
}
((""))
{
}
((""))
{
}
((""))
{
}
((""))
{
}
((""))
{
}
((""))
{
}
((""))
{
}
((""))
{
}
((""))
{
}
((""))
{
}
((""))
{
}
((""))
{
}
((""))
{
}
((""))
{
}
()
{
}
{
}
}
;
}
}
這里就是對(duì)文件中的各個(gè)標(biāo)簽進(jìn)行解析了,各個(gè)標(biāo)簽的含義可以參考官方文檔"""",這里我們只簡(jiǎn)單看一下標(biāo)簽的解析,這是通過(guò)調(diào)用函數(shù)來(lái)進(jìn)行的。
11.
這個(gè)函數(shù)定義在文件中:[]
""\o""""\o""
{
(
,
,
,
,
,
[]
)
,
{
=
;
=
;
=
(,
);
;
((())
(
()
>
))
{
(
)
{
;
}
=
();
((""))
{
a
=
(,
,
,
,
,
,
);
(a);
}
((""))
{
a
=
(,
,
,
,
,
,
);
(a);
}
((""))
{
s
=
(,
,
,
,
,
);
(s);
}
((""))
{
p
=
(,
,
,
,
,
);
(p);
}
((""))
{
a
=
(,
,
,
,
,
);
(a);
}
(()(""))
{
}
((""))
{
}
((""))
{
}
{
}
}
;
}
}
這里就是對(duì)文件中的標(biāo)簽進(jìn)行解析了,我們常用到的標(biāo)簽就有、、和,各個(gè)標(biāo)簽的含義可以參考官方文檔""""。
這里解析完成后,一層層返回到9中,調(diào)用另一個(gè)版本的函數(shù)把來(lái)解析后得到的應(yīng)用程序信息保存下來(lái)。
12.
這個(gè)函數(shù)定義在文件中:[]
""\o""""\o""
{
(
),
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 玻璃吊橋led施工方案
- 弧形閘門(mén)專項(xiàng)施工方案
- 斜井隧道施工方案
- 水庫(kù)鉆孔注漿施工方案
- 涵洞水管架空施工方案
- 承接彩燈施工方案
- 小麥島內(nèi)部施工方案
- 電梯梯井施工方案
- 橡膠地面景觀施工方案
- 老年心房顫動(dòng)診治中國(guó)專家共識(shí)(2024)解讀
- 部編版三年級(jí)《習(xí)作我做了一項(xiàng)小實(shí)驗(yàn)》教案
- 部編版八年級(jí)上冊(cè)歷史期中復(fù)習(xí)重點(diǎn)總結(jié)
- (高清版)WST 406-2024 臨床血液檢驗(yàn)常用項(xiàng)目分析質(zhì)量標(biāo)準(zhǔn)
- 2024年揚(yáng)州市職業(yè)大學(xué)單招職業(yè)適應(yīng)性測(cè)試題庫(kù)1套
- 消防安全技術(shù)綜合能力要點(diǎn)概述
- DL-T 5148-2021水工建筑物水泥灌漿施工技術(shù)條件-PDF解密
- 道路施工安全隱患及防范措施
- 新生兒魚(yú)鱗病個(gè)案護(hù)理
- 軟包裝工藝流程
- 生物質(zhì)燃料的資源開(kāi)發(fā)與利用
評(píng)論
0/150
提交評(píng)論