前言
在Android實際開發中,經常會使用adb命令,安裝應用程序可以使用 adb push 或者 adb install 。(安卓手機使用adb工具安裝apk的方式最快)
下面就來講講這兩種安裝方式的區別。
區別
1、adb push 能夠指定安裝目錄。比如執行 adb push xxx.apk system/app 后,xxx.apk被安裝到了system/app目錄下,此目錄下的軟件為system application。(注意,system/app是只讀的,所以只有有root權限才能push apk進去,而且push進去的apk會把原本的apk覆蓋掉。)
adb push 本身的意思是將文件復制到系統中的某個文件夾下;但是將apk push到system/app下並重啟手機以后同時會成功注冊應用程序,即該方式成功安裝應用。
【注意】安卓手機的 /system/app 目錄大多數都是手機中的系統apk;adb push 沒有adb install保險,有失敗的可能;有時候因 /system/app 目錄是只讀的原因而導致在執行adb push 命令的時候出現 failed to copy '/home/SoundRecorder.apk' to '/system/app/SoundRecorder.apk': Read-only file system 錯誤,解決方法是只能放棄adb push,采用 adb install -r /home/SoundRecorder.apk 強制安裝apk
例如: adb push xxxx.apk /system/app
解釋:/system/app目錄是安卓手機中的系統apk應用。(本實例安裝到 system/app目錄下,當然也可以安裝到/data/app目錄下,也是直接安裝的。但是有時會安裝不成功)
2、 adb install 用此命令安裝的軟件位於 data/app 目錄;成功安裝的應用為user application。
【注意】安卓手機的data/app目錄大多是手機中的非系統apk,即第三方下載安裝的app。
例如: adb install xxxx.apk
解釋:可以將PC端的apk安裝到手機的 data/app 目錄,xxx.apk 這里必須要使用絕對路徑,當然也將.apk文件可以直接拽到命令行中。
操作截圖:
adb install安裝apk的幾類參數:
adb install -r xxxx.apk 強制覆蓋安裝(替換安卓手機上原有的apk或者已經安裝的apk即覆蓋安裝時使用)
adb install -l xxxx.apk 鎖定該程序
adb install -s xxxx.apk 安裝在SD卡內,而不是設備內部存儲
adb uninstall卸載apk的參數:
adb uninstall xxxx(app包名) 卸載應用,需要指定包
adb uninstall -k xxxx(app包名) 卸載app,但保留app的原始數據和緩存文件
清安卓手機指定app的緩存:
adb shell pm clean xxxx(app包名) 可以清除安卓手機某個包apk的數據,就是相當於清除數據(清app緩存)
adb shell pm clear xxxx(app包名) 可以清除安卓手機某個包apk的數據,就是相當於清除數據(清app緩存)
獲取安卓手機所有apk的包名:
adb shell pm list packages
獲取安卓手機種所有應用的包名中包含《指定內容》的應用包名:
Windows操作系統: adb shell pm list packages | findstr geely
Linux操作系統: adb shell pm list packages | grep geely
獲取安卓手機內《某一指定應用》的安裝位置(安裝目錄):
adb shell pm list packages -f com.geely.consumer
adb shell pm path com.geely.consumer
總結
adb install和adb push的安裝 apk 的方式主要區別有:
push | install | |
目錄 | system/app | data/app |
權限 | 系統級(權限全開) | 用戶級(沒全開) |
卸載 | root后刪除 | 可卸載 |
大小 | 無限制,自定義 | 有限制 |
安裝 | pm重新注冊 | 不會重新弄注冊 |