在開發(fā)中夺鲜,使用AS工具憋槐,點(diǎn)擊運(yùn)行安裝在測試機(jī)上。會(huì)看到Logcat上打印好多東西止状。我無意間發(fā)現(xiàn)了一段這樣的話烹棉。
05/23 09:30:43: Launching app
adb推送apk到手機(jī)data文件下
$ adb push G:\AppData\OneCreate\app\build\outputs\apk\app_onecreate_v1.3.3_20180523.apk /data/local/tmp/com.ia36.onecreate
我發(fā)現(xiàn)中間夾雜著pm,pm是什么呢怯疤?浆洗??
$ adb shell pm install -t -r "/data/local/tmp/com.ia36.onecreate"
pkg: /data/local/tmp/com.ia36.onecreate
Success
pm解釋
pm工具為包管理(package manager)的簡稱旅薄,可以使用pm工具來執(zhí)行應(yīng)用的安裝和查詢應(yīng)用包的信息辅髓、系統(tǒng)權(quán)限泣崩、控制應(yīng)用。pm工具是Android開發(fā)與測試過程中必不可少的工具洛口。通常放置在System/bin下矫付。
pm命令
G:\AppData\OneCreate>adb shell pm
usage: pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FIL
TER]
pm list permission-groups
pm list permissions [-g] [-f] [-d] [-u] [GROUP]
pm list instrumentation [-f] [TARGET-PACKAGE]
pm list features
pm list libraries
pm list users
pm path PACKAGE
pm dump PACKAGE
pm install [-lrtsfd] [-i PACKAGE] [PATH]
pm install-create [-lrtsfdp] [-i PACKAGE] [-S BYTES]
pm install-write [-S BYTES] SESSION_ID SPLIT_NAME [PATH]
pm install-commit SESSION_ID
pm install-abandon SESSION_ID
pm uninstall [-k] [--user USER_ID] PACKAGE
pm set-installer PACKAGE INSTALLER
pm clear [--user USER_ID] PACKAGE
pm enable [--user USER_ID] PACKAGE_OR_COMPONENT
pm disable [--user USER_ID] PACKAGE_OR_COMPONENT
pm disable-user [--user USER_ID] PACKAGE_OR_COMPONENT
太多省略點(diǎn)...可以自行測試查看
pm單獨(dú)使用是會(huì)報(bào)錯(cuò)的。必須與命令一起使用第焰。adb shell pm -----
pm查詢類
- list packages:列出設(shè)備中已經(jīng)安裝的所有應(yīng)用包(包括系統(tǒng)應(yīng)用和用戶應(yīng)用)买优;
- list features:列出所有硬件相關(guān)信息;
- list libraries :列出當(dāng)前設(shè)備支持的libs挺举;
- list users:列出系統(tǒng)上所有的users杀赢;
- list permissions:列出所有已知的權(quán)限;
- list ‘pkgname’:列出指定包名的associated文件(APK存檔文件)所在湘纵;
- path ‘pkgname’:查詢package的安裝位置脂崔。
pm操作類
- install [-lrtsfd] [PATH]:安裝命令;
- -l :鎖定應(yīng)用程序梧喷;
- -r:重新安裝應(yīng)用砌左,且保留應(yīng)用數(shù)據(jù);
- -i:指定安裝包的包名铺敌;
- -s:安裝到sd卡汇歹;
- -f:安裝到系統(tǒng)內(nèi)置存儲(chǔ)中(默認(rèn)安裝位置);
- -g:授予應(yīng)用程序清單中列出的所有權(quán)限(只有6.0系統(tǒng)可用)偿凭;
- uninstall [options] ‘pkgname’:卸載命令产弹;
- -k:卸載應(yīng)用且保留數(shù)據(jù)與緩存(如果不加-k則全部刪除);
- clear ‘pkgname’ :對(duì)指定的package刪除所有數(shù)據(jù)弯囊;
- enable ‘pkgname’ :使package或component可用痰哨。(如:pm enable “package/class”);
- disable ‘pkgname’ :使package或component不可用常挚。(如:pm disable “package/class”)作谭;
- grant ‘pkgname’:授權(quán)給應(yīng)用;
- revoke ‘pkgname’:撤銷權(quán)限奄毡;
- set-install-location ‘location’:設(shè)置默認(rèn)的安裝位置折欠。
其中0:讓系統(tǒng)自動(dòng)選擇最佳的安裝位置。1:安裝到內(nèi)部的設(shè)備存儲(chǔ)空間吼过。2:安裝到外部的設(shè)備存儲(chǔ)空間锐秦; - get-install-location :返回當(dāng)前的安裝位置。返回結(jié)果同上參數(shù)選項(xiàng)盗忱;
- create-user ‘USER_NAME’ :增加一個(gè)新的USER酱床;
- remove-user ‘USER_ID’ :刪除一個(gè)USER;
示例
查看系統(tǒng)支持的libs
G:\AppData\OneCreate>adb shell pm list libraries
library:android.test.runner
library:com.android.future.usb.accessory
library:com.android.location.provider
library:com.android.media.remotedisplay
library:com.android.mediadrm.signer
library:com.google.widevine.software.drm
library:com.mediatek.effect
library:javax.obex
查看包安裝路徑
G:\AppData\OneCreate>adb shell pm path 'com.ia36.one'
package:/data/app/com.ia36.one-1/base.apk
清除apk的緩存
G:\AppData\OneCreate>adb shell pm clear 'com.ia36.one'
Success
卸載apk應(yīng)用
G:\AppData\OneCreate>adb shell pm uninstall 'com.ia36.onecreate'
Success
結(jié)語
我覺得pm還是挺好用的趟佃,很快扇谣,方便昧捷。省去你手動(dòng)去觸發(fā)操作。 ^ - ^