在知道如何將apk文件更新到系統文件之下以前咱們須要先了解下Android源碼和Android開發相關的相關知識.shell
Android 源碼目錄說明bash
截取關鍵目錄說明網絡
Android
|-- system (底層文件系統庫、應用及組件——C語言)
|-- vendor (廠商定製代碼)
複製代碼
能夠看到vendor目錄是廠商定製化的目錄, 所以將apk文件更新到vendor目錄之下是一種權限較高的操做.app
手機app開發是直接基於Android原生無裁剪的SDK開發的. 直接使用原生系統提供的各類API. 且通常安裝在用戶目錄 data/app
之下.工具
機頂盒的系統是基於原生AOSP裁剪並進行相應擴展而來的系統, 在其上開發的app調用了不少非原生自帶的API等. 且通常安裝在系統目錄 system/app
或者廠商定製目錄 vendor/app
之下.spa
將須要更新的apk文件例如 APP_NAME.apk
文件存放在U盤裏..net
將U盤插在板子上經過 SecureCRT.exe
工具進行拷貝.調試
用 SecureCRT.exe
工具將開發板鏈接以後在 su
模式下進行 cp
命令 cp /storage/sda1/APP_NAME.apk vendor/app/
.code
步驟3會提示 cp: vendor/app/APP_NAME.apk: Read-only file system
表示該文件夾不可寫.須要將該文件夾進行掛載.blog
輸入命令mount -o rw,remount /vendor
此時vendor文件夾就是具備可讀可寫的權限.
重複步驟3的命令則能夠將apk文件更新到 vendor/app
文件夾之下, 再輸入 reboot
重啓命令則能夠看到最新的app了.
確保開發板和電腦的網絡處於同一個網段, 便於後續經過adb進行網絡調試.
經過adb命令鏈接開發板 adb connect [開發板的ip地址:5555]
, 例如 adb connect 10.100.10.10:5555
若是提示 connected to 10.100.10.10:5555
則表示鏈接成功. 其餘則表示鏈接失敗. 檢查ip地址和端口號是否正確.
再經過 adb devices
查看鏈接的設備數量, 通常狀況下會顯示以下:
List of devices attached
10.100.10.10:5555 device
複製代碼
可是若是開發板和電腦之間還用雙頭USB線進行鏈接的話顯示以下:
List of devices attached
0123456789 device
10.100.10.10:5555 device
複製代碼
會發現多了一個0123456789
設備
若是隻有一個設備時則直接經過 adb push [apk路徑] /vendor/app
例如 adb push F:apk\APP_NAME.apk /vendor/app
提示 F:apk\APP_NAME.apk: 1 file pushed. 9.3 MB/s (19684462 bytes in 2.021s)
則表示成功.
若是有多個設備時則經過 adb -s 設備ip地址:端口 push [apk路徑] /vendor/app
例如 >adb -s 10.100.10.10:5555 push F:apk\APP_NAME.apk /vendor/app
步驟4或者步驟5會出現方法1時的權限問題 F:apk\APP_NAME.apk' to '/vendor/app/APP_NAME.apk': remote couldn't create file: Read-only file system
, 則須要經過adb將文件夾進行掛載.
進入設備的 shell
模式
一個設備時的命令:
>adb shell
:/ #>mount -o rw,remount /vendor
:/ #>exit
再次進行步驟4
複製代碼
多個設備時的命令:
>adb -s [ip地址] shell
:/ #>mount -o rw,remount /vendor
:/ #>exit
再次進行步驟5
複製代碼
文/謝康