android源碼經編譯後會生成幾個重要的鏡像文件,其中之一即是system.img。當咱們想將本身編寫的或第三方APK預製到手機中,通常有兩種方法可供咱們選擇。第一種是將APK放入android源碼特定目錄中一塊兒編譯,這種方法耗時很是長。第二種是對system.img進行解壓後再將該的APK放入,而後從新打包生成system.img。固然,system.img解壓後,還能夠作不少事,咱們以預製一個APK舉例介紹如何解壓和生成system.img。linux
要實現system.img的解壓和生成,有兩個工具是必不可少的——make_ext4fs和simg2img。make_ext4fs用來製做ext4鏡像,simg2img用來將system.img還原ext4鏡像。這兩個工具是在編譯的過程當中生成的,能夠在out\host\linux-x86\bin目錄下找到。android
接下來就看看這個過程:app
1.找到system.img。工具
2.使用simg2img工具對system.img進行處理(名字可隨意取,這裏取爲system_raw.img.ext4,後綴不能改變)。oop
$./simg2img system.img system_raw.img.ext4spa
3.建立一個目錄,如mysystem.源碼
$mkdir mysystem編譯
4.將system_raw.img.ext4掛載到mysystem.ast
mount -t ext4 -o loop system_raw.img.ext4 system打包
5. 此時查看mysystem目錄,會發現已經生成了不少文件(夾)。修改它們,如將一個本身寫的APK拷貝到mysystem/app中。若是須要,可先將APK放入一個同名的文件夾(如將myapp.apk先放入到myapp中),再拷貝過去。
6. 從新打包生成system_new.img.
$./make_ext4fs -s -l 512M -a mysystem system_new.img mysystem
其中,512M表示分區大小,可根據具體狀況進行調整;第一個mysystem表示掛載點爲/mysystem;第二個mysystem表示mysystem目錄。
7. 將system_new.img重命名爲system.img,替換掉原先的system.img,就能夠往手機裏面燒錄了。