Android系統(tǒng)應(yīng)用(12)

如何成為系統(tǒng)應(yīng)用

方法一:在Manifest中聲明android:sharedUserId的值為:android.uid.system肖油,android.uid.phone,android.uid.log贾费,android.uid.nfc,android.uid.bluetooth,android.uid.shell的應(yīng)用。

#android/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java

//PMS中根據(jù)privateFlags和flags來判定一個應(yīng)用是否為SystemApp或PrivilegedApp
private static boolean isSystemApp(PackageParser.Package pkg) {
    return (pkg.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
}

//特權(quán)系統(tǒng)應(yīng)用
private static boolean isPrivilegedApp(PackageParser.Package pkg) {
    return (pkg.applicationInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_PRIVILEGED) != 0;
}

private static boolean isSystemApp(PackageSetting ps) {
    return (ps.pkgFlags & ApplicationInfo.FLAG_SYSTEM) != 0;
}

//根據(jù)sharedUserId賦值flags和privateFlags慢宗,全部為特權(quán)系統(tǒng)應(yīng)用
mSettings = new Settings(mPackages);
mSettings.addSharedUserLPw("android.uid.system", Process.SYSTEM_UID,ApplicationInfo.FLAG_SYSTEM, ApplicationInfo.PRIVATE_FLAG_PRIVILEGED);
mSettings.addSharedUserLPw("android.uid.phone", RADIO_UID,ApplicationInfo.FLAG_SYSTEM, ApplicationInfo.PRIVATE_FLAG_PRIVILEGED);
mSettings.addSharedUserLPw("android.uid.log", LOG_UID,ApplicationInfo.FLAG_SYSTEM, ApplicationInfo.PRIVATE_FLAG_PRIVILEGED);
mSettings.addSharedUserLPw("android.uid.nfc", NFC_UID,ApplicationInfo.FLAG_SYSTEM, ApplicationInfo.PRIVATE_FLAG_PRIVILEGED);
mSettings.addSharedUserLPw("android.uid.bluetooth", BLUETOOTH_UID,ApplicationInfo.FLAG_SYSTEM, ApplicationInfo.PRIVATE_FLAG_PRIVILEGED);
mSettings.addSharedUserLPw("android.uid.shell", SHELL_UID,ApplicationInfo.FLAG_SYSTEM, ApplicationInfo.PRIVATE_FLAG_PRIVILEGED);

方法二:指定目錄下的應(yīng)用:/vendor/overlay,/system/framework奔穿,/system/priv-app镜沽,/system/app,/vendor/app贱田,/oem/app缅茉。

#android/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java

private static final String VENDOR_OVERLAY_DIR = "/vendor/overlay";
  
File vendorOverlayDir = new File(VENDOR_OVERLAY_DIR);
scanDirLI(vendorOverlayDir, PackageParser.PARSE_IS_SYSTEM | PackageParser.PARSE_IS_SYSTEM_DIR, scanFlags | SCAN_TRUSTED_OVERLAY, 0);

//PackageParser.PARSE_IS_PRIVILEGED標(biāo)志會轉(zhuǎn)換為ApplicationInfo.PRIVATE_FLAG_PRIVILEGED
// /system/framework為特權(quán)系統(tǒng)應(yīng)用,只是包含資源湘换,不包含代碼
File frameworkDir = new File(Environment.getRootDirectory(), "framework");
scanDirLI(frameworkDir, PackageParser.PARSE_IS_SYSTEM | PackageParser.PARSE_IS_SYSTEM_DIR | PackageParser.PARSE_IS_PRIVILEGED,scanFlags | SCAN_NO_DEX, 0);
// /system/priv-app為特權(quán)系統(tǒng)應(yīng)用
final File privilegedAppDir = new File(Environment.getRootDirectory(), "priv-app");
scanDirLI(privilegedAppDir, PackageParser.PARSE_IS_SYSTEM | PackageParser.PARSE_IS_SYSTEM_DIR | PackageParser.PARSE_IS_PRIVILEGED, scanFlags, 0);

final File systemAppDir = new File(Environment.getRootDirectory(), "app");
scanDirLI(systemAppDir, PackageParser.PARSE_IS_SYSTEM | PackageParser.PARSE_IS_SYSTEM_DIR, scanFlags, 0);

File vendorAppDir = new File("/vendor/app");
scanDirLI(vendorAppDir, PackageParser.PARSE_IS_SYSTEM | PackageParser.PARSE_IS_SYSTEM_DIR, scanFlags, 0);

final File oemAppDir = new File(Environment.getOemDirectory(), "app");
scanDirLI(oemAppDir, PackageParser.PARSE_IS_SYSTEM | PackageParser.PARSE_IS_SYSTEM_DIR, scanFlags, 0);

系統(tǒng)應(yīng)用分類

普通系統(tǒng)應(yīng)用
特權(quán)系統(tǒng)應(yīng)用
定義:特權(quán)系統(tǒng)應(yīng)用是系統(tǒng)應(yīng)用宾舅,同時有ApplicationInfo.PRIVATE_FLAG_PRIVILEGED標(biāo)志。
功能:可以使用protectionLevel為signatureOrSystem或signature|privileged的權(quán)限彩倚。

如何成為特權(quán)系統(tǒng)應(yīng)用

根據(jù)如何成為系統(tǒng)應(yīng)用中PackageManagerService的定義筹我,成為特權(quán)系統(tǒng)應(yīng)用有如下兩種方法:
方法一:在Manifest中聲明android:sharedUserId的值為:android.uid.system,android.uid.phone帆离,android.uid.log蔬蕊,android.uid.nfc,android.uid.bluetooth哥谷,android.uid.shell的應(yīng)用岸夯。
方法二:指定目錄下的應(yīng)用:/system/framework,/system/priv-app们妥。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末猜扮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子监婶,更是在濱河造成了極大的恐慌旅赢,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惑惶,死亡現(xiàn)場離奇詭異煮盼,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)带污,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門僵控,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鱼冀,你說我怎么就攤上這事报破∮凭停” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵泛烙,是天一觀的道長理卑。 經(jīng)常有香客問我,道長蔽氨,這世上最難降的妖魔是什么藐唠? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮鹉究,結(jié)果婚禮上宇立,老公的妹妹穿的比我還像新娘。我一直安慰自己自赔,他們只是感情好妈嘹,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绍妨,像睡著了一般润脸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上他去,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天毙驯,我揣著相機(jī)與錄音,去河邊找鬼灾测。 笑死爆价,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的媳搪。 我是一名探鬼主播铭段,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼秦爆!你這毒婦竟也來了序愚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤等限,失蹤者是張志新(化名)和其女友劉穎展运,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體精刷,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年蔗候,在試婚紗的時候發(fā)現(xiàn)自己被綠了怒允。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡锈遥,死狀恐怖纫事,靈堂內(nèi)的尸體忽然破棺而出勘畔,到底是詐尸還是另有隱情,我是刑警寧澤丽惶,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布炫七,位于F島的核電站,受9級特大地震影響钾唬,放射性物質(zhì)發(fā)生泄漏万哪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一抡秆、第九天 我趴在偏房一處隱蔽的房頂上張望奕巍。 院中可真熱鬧,春花似錦儒士、人聲如沸的止。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诅福。三九已至,卻和暖如春拖叙,著一層夾襖步出監(jiān)牢的瞬間氓润,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工憋沿, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留旺芽,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓辐啄,卻偏偏與公主長得像采章,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子壶辜,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,117評論 25 707
  • 用兩張圖告訴你悯舟,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 12,723評論 2 59
  • 最近面試聊到很多啟動過程的事情: Android系統(tǒng)的啟動過程中就已經(jīng)解析了系統(tǒng)中安裝應(yīng)用的androidMani...
    樂之飛于閱讀 1,264評論 0 1
  • 早上棟哥果然沒有像平時那樣把我吵醒砸民。一大早就開收拾行李抵怎,到中午才算弄完。 下午打了今年最后一把升級(拖拉機(jī))岭参。 玩...
    一次遇見閱讀 531評論 0 0
  • 當(dāng)XP系統(tǒng)退出歷史舞臺的時候反惕,眾多的Linux愛好者就撰文列舉Linux替代XP的種種可能。雖然講得很有道理演侯,加上...
    殘劍閱讀 539評論 0 2