中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android內核開發:從源碼樹中刪除出廠的app應用

發布時間:2020-05-31 10:52:35 來源:網絡 閱讀:7474 作者:Jhuster 欄目:移動開發

本文是《Android內核開發》系列的第十一篇文章,本文重點介紹如何從Android源碼中刪除出廠的app應用。


上一篇文章中提到過,系統出廠的app應用,其實就是被安裝到/system分區的app,這些app在Android源碼樹中被編譯后打包到了system.img鏡像中,系統啟動時,以只讀的方式掛載/system目錄,因此,非root手機用戶是無法刪除這些app的。


如果我們已經成功獲取了手機的root權限,就可以通過下面的方法直接刪除掉系統出廠的app應用,假設某app的安裝文件叫做xxxx.apk,那么刪除它的命令如下所示:


$ adb root

$ adb remount

$ adb shell rm /system/app/xxxx.apk


同樣,我們也可以將自己的app安裝到系統的/system目錄中去:


$ adb root

$ adb remount

$ adb push xxxx.apk /system/app/


上面的方法只是介紹了通過命令行的方式手動添加/刪除系統出廠的app,那么,如何從Android系統源碼樹中刪除指定的出廠的app應用呢?


首先,推薦大家閱讀一下這篇文章:《理解 Android Build 系統》,大致了解一下整個Android源碼的編譯系統架構,本文在這篇文章的基礎上,重點關注如何刪減系統出廠的app。


Android源碼中,在 build/target/product 目錄下預先定義了很多app列表的組合,如下所示:


Android內核開發:從源碼樹中刪除出廠的app應用


在開發具體的Android產品時,可以通過“引用”這些系統預定義的mk文件,快速形成某類產品的app列表,比如包含了generic_no_telephony.mk的產品,就直接定義了時鐘,郵件,日歷,照相機的常用的app。


那么,上面這些系統預定義的mk文件,到底哪些被具體的Android產品“引用”了呢?


Android源碼樹中,真正定義產品配置的文件夾是:device/<company>/<product>,以我手頭的beagleboneblack源碼為例,如下所示:


$ cd beaglebone/device/ti/beagleboneblack

$ ls *.mk


Android.mk  

AndroidProducts.mk  

beagleboneblack.mk  

BoardConfig.mk  

CleanSpec.mk  

device.mk


以上就是beagleboneblack產品配置最核心的mk文件了,其中,AndroidProducts.mk和BoardConfig.mk兩個文件是必須的,編譯系統會首先搜索這兩個文件。


AndroidProducts.mk文件一般會直接指向具體產品配置文件,如本例中指向了beagleboneblack.mk文件,在beagleboneblack.mk中,則會詳細地定義產品的名稱、廠商、出廠的APP、需要拷貝的文件等等; BoardConfig.mk則是用來配置設備的硬件信息,如CPU架構、內核相關信息、bootloader、WIFI模塊相關配置等等。


由此可見,要刪減系統出廠的app,我們只需要重點關注AndroidProducts.mk所指向的xxxxx.mk文件即可,如本例中的beagleboneblack.mk。


具體決定是否編譯某個app的宏是“PRODUCT_PACKAGES”,例如:


PRODUCT_PACKAGES := \

    DeskClock \

    Calculator \

    Calendar \

    Camera2 \

    Email \


因此,如果希望刪減掉某個app,直接從“PRODUCT_PACKAGES”列表刪除掉就行了,例如,刪除掉 Email,那么系統出廠的app里面就不會有“ Email”這個app了。(注意,具體的xxxx.mk文件通常還會引用其他的mk文件,比如:generic_no_telephony.mk,device.mk 等等,因此,在分析過程中,凡是被依賴的mk文件也需要深入分析和刪減),例如:


//beagleboneblack.mk


$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk)

$(call inherit-product, device/ti/beagleboneblack/device.mk)


關于如何從Android源碼樹中刪除APP就介紹到這里了,有任何疑問或者建議歡迎留言或者來信lujun.hust@gmail.com交流,或者關注我的新浪微博 @盧_俊 獲取最新的文章和資訊。



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南汇区| 大田县| 宝兴县| 临潭县| 汽车| 垣曲县| 沈阳市| 长岭县| 玛沁县| 巫山县| 汉寿县| 竹溪县| 霍林郭勒市| 凤庆县| 英德市| 阳谷县| 哈密市| 若尔盖县| 即墨市| 高雄县| 舟山市| 和林格尔县| 乌鲁木齐市| 聊城市| 焦作市| 临武县| 皋兰县| 社会| 宣城市| 漳州市| 永康市| 齐齐哈尔市| 浦北县| 德兴市| 凌源市| 灌云县| 宝坻区| 荃湾区| 海丰县| 满洲里市| 嘉义市|