使Android的system分割槽可寫及安裝apk到system/app
在網上看到幾種方式記錄一下:
通過adb shell訪問Android。有時候會在已經root的系統檔案下面進行讀寫,例如/system,但是會提示類似read only file system的資訊。
目前發現兩種方法,該方法只在自己的測試機上成功,不保證其他機子一樣。我的是Huawei U8818
下面的例子都是圍繞/system目錄。
方法一:
使用df命令檢視
- # df
- df
- Filesystem Size Used Free Blksize
- /dev 197M 64K 197M 4096
- /mnt/asec 197M 0K 197M 4096
- /mnt/obb 197M 0K 197M 4096
- /system 295M 245M 50M 4096
- /data 755M 26M 728M 4096
- /cache 188M 4M 184M 4096
- /HWUserData 2G 1024K 2G 32768
- /cust 59M 14M 44M 4096
- /mnt/sdcard 7G 753M 6G 32768
- /mnt/secure/asec 7G 753M 6G 32768
接著檢視/proc下的partitions
- # cat /proc/partitions
- cat /proc/partitions
- major minor #blocks name
- 179 0 3817472 mmcblk0
- 179 1 20 mmcblk0p1
- 179 2 300 mmcblk0p2
- 179 3 133120 mmcblk0p3
- 179 4 1 mmcblk0p4
- 179 5 12288 mmcblk0p5
- 179 6 196608 mmcblk0p6
- 179 7 4096 mmcblk0p7
- 179 8 3072 mmcblk0p8
- 179 9 4096 mmcblk0p9
- 179 10 3072 mmcblk0p10
- 179 11 3072 mmcblk0p11
- 179 12 393216 mmcblk0p12
- 179 13 786432 mmcblk0p13
- 179 14 4096 mmcblk0p14
- 179 15 8192 mmcblk0p15
- 179 16 20480 mmcblk0p16
- 179 17 4096 mmcblk0p17
- 179 18 81920 mmcblk0p18
- 179 19 2154496 mmcblk0p19
- 179 32 7761920 mmcblk1
- 179 33 7757824 mmcblk1p1
- 31 0 4096 mtdblock0
(其實,可以在/proc/mounts下面看的更直接。。。)
於是,輸入以下mount命令
- # mount -o remount,rw /dev/block/mmcblk0p12 /system
當然,如果不打算重啟機子的話,最好還是將它恢復到read only狀態。輸入:
- # mount -o remount,ro /dev/block/mmcblk0p12 /system
而實際上試過將不同的分割槽跟掛載點remount一下,居然還是可以的。原因暫時不明。
方法二:《此方法試過可用》
考慮到上面用斜黑體字寫的現象,嘗試用其他資訊代替”/dev/block/mmcblk0p12“,試了一下居然也是可行的!
直接輸入下列命令即可:
-
- # mount -o remount,rw [email protected] /system
- 第二種方法雖然也是可以的。之所以這麼寫是參考init.rc裡面的mount寫法。
不清楚這個是怎麼回事,要是原生的linux mount命令應該不會這樣的。
刪掉了內建軟體,便有了閒置的空間,這時可以用這部分空間安裝一些自己必裝的軟體。平時安裝的所有軟體,除了少數可以移到記憶體卡,其他的都安裝在data/app目錄,所以安裝到system/app可以節約手機自帶的儲存。而且,安裝到system/app目錄後,即使恢復出廠了,也不會消失。
安裝方法有三種:
第一種(適合沒有odex檔案的),正常安裝,然後用R.E.管理器到data/app目錄找到安裝包,把它剪下到system/app目錄,再用R.E.管理器進入安裝包內,檢視是否存在lib資料夾,如果存在,就要把裡面的以.so為字尾的檔案通通解壓出來,移動到system/lib,然後重啟手機,成功。
第二種,用超級終端:把需要安裝的軟體放到sdcard/a目錄,比如需要安裝b.apk(和b.odex),括號內的部分可有可無。把b.apk(和b.odex)複製或者移動到sdcard/a目錄,開啟超級終端,
1、輸入su按回車;
2、輸入mount空-o空remount,rw空-t空yaffs2空/dev/block/mtdblock3空/system按回車;空表示該處需要空格
3、輸入 cd 空/sdcard/a按回車;
4、輸入ls按回車,將會列出a資料夾內包含的所有檔案。此步不是必需的。
5、輸入cat空b.apk空>空/system/app/*.apk按回車,*表示名稱可以任你取,但是不能與已經存在於system/app目錄的軟體同名;
6、有odex的才要這一步,輸入cat空b.odex空>空/system/app/*.odex,*與上一個*內容相同。
7、輸入reboot重啟或者自己手動重啟。然後用第一步的方式處理.so檔案;
第三種,也是用超級終端,換個更簡單的命令而已。1234步不變。
5、輸入busybox回車,如果列出一大堆單詞,那麼可以繼續。
6、輸入busybox空cp空b.apk空/system/app回車;
7、如果有odex,輸入busybox空cp空b.odex空/system/app回車;沒有odex的跳下一步;