adbのam、pmコマンド
8232 ワード
PMコマンド
pmすなわちpackage managerは,pmコマンドを用いてandroid動作をシミュレートしたり,デバイス上のアプリケーション情報をクエリーしたりすることができる.
1、コマンド形式:
pm
2、コマンドリスト:
コマンド#コマンド#
機能
実装方法
dump
dump情報
AM.dumpPackageStateStatic
clear
Appデータのクリア
AMS.clearApplicationUserData
uninstall [options]
アプリケーションのアンインストール
IPackageInstaller.uninstall
force-dex-opt
dex最適化
PMS.forceDexOpt
trim-caches
ターゲットサイズの縮小
PMS.freeStorageAndNotify
list packages
appパケット情報の列挙
PMS.getInstalledPackages
get-install-location
インストール場所の取得
PMS.getInstallLocation
path
Appパスの表示
PMS.getPackageInfo
install [options]
アプリケーションのインストール
PMS.installPackageAsUser
hide
アプリケーションの非表示
PMS.setApplicationHiddenSettingAsUser
unhide
アプリケーションの表示
PMS.setApplicationHiddenSettingAsUser
enable
enable
PMS.setEnabledSetting
disable
disable
PMS.setEnabledSetting
set-install-location
設置場所の設定
PMS.setInstallLocation
get-max-users
最大ユーザー数
UserManager.getMaxSupportedUsers
例:
1、携帯アプリリスト情報を取得する
2、インストールパッケージのAPKパスを出力する
3.パッケージに関連するすべてのデータを削除する:データとキャッシュをクリアする
AMコマンド
amすなわちactivity managerは、amコマンドを使用して様々なシステムの動作をシミュレートすることができます.例えば、activityを起動したり、プロセスを強制的に停止したり、ブロードキャストを送信したりすることができます.
一、常用命令
開発者としてadb命令に慣れていないと信じています.では、携帯電話でadbに接続すると、amコマンドで多くの操作ができます.
(1)電話番号10086
(2)ウェブサイトwww.gityuanを開く.com
(3)Activityの起動
起動パッケージ名はcom.yuanhh.app,主Activityは.MainActivity、extraデータは「website」をkey、「yuanh.com」をvalueとします.Javaコードでこの機能を完了するには複雑ではありませんが、少なくとも1つのandroid環境が必要です.adbでは、adbウィンドウで次のコマンドを入力するだけで完了します.
amコマンドは、サービス、Broadcast、プロセスの殺し、モニタリングなどの機能を起動することもできます.これらの機能は、デバッグが非常に便利で、amのより詳細な機能について説明します.
4、プロセスを殺す
二、Options
主にActivityコマンドam start[options]を起動してoptionsパラメータを使用し、次にActivityコマンドの[options]パラメータを列挙します.
-D:デバッグ機能の許可
-W:app起動完了待ち
-R:Activity COUNT回繰り返し起動
S:activityを起動する前にforceStopPackage()メソッドを呼び出してappを強制停止する.
-opengl-trace:OpenGL関数を取得するtraceを実行する
-user|current:Appを実行するユーザーを指定します.デフォルトは現在のユーザーです.
-start-profiler:profilerを起動し、結果を送信します.
-P:類似
-start-profiler、appがidle状態になるとprofilingを停止するのとは異なり
-sampling INTERVAL:profilerの設定
サンプリング時間間隔、単位ms;Activityの実装を開始する原理:-Wパラメータが存在する場合、startActivity AndWait()メソッドを呼び出して実行します.そうでない場合、startActivity AssUser()です.
三、応用特例の起動
アプリケーションを起動する方法はpackageName/classNameが一般的ですが、アプリケーションのパッケージ名だけを知っていてactivityを起動する名前を知らない場合は、どうやって起動しますか?
pmすなわちpackage managerは,pmコマンドを用いてandroid動作をシミュレートしたり,デバイス上のアプリケーション情報をクエリーしたりすることができる.
1、コマンド形式:
pm
2、コマンドリスト:
コマンド#コマンド#
機能
実装方法
dump
dump情報
AM.dumpPackageStateStatic
clear
Appデータのクリア
AMS.clearApplicationUserData
uninstall [options]
アプリケーションのアンインストール
IPackageInstaller.uninstall
force-dex-opt
dex最適化
PMS.forceDexOpt
trim-caches
ターゲットサイズの縮小
PMS.freeStorageAndNotify
list packages
appパケット情報の列挙
PMS.getInstalledPackages
get-install-location
インストール場所の取得
PMS.getInstallLocation
path
Appパスの表示
PMS.getPackageInfo
install [options]
アプリケーションのインストール
PMS.installPackageAsUser
hide
アプリケーションの非表示
PMS.setApplicationHiddenSettingAsUser
unhide
アプリケーションの表示
PMS.setApplicationHiddenSettingAsUser
enable
enable
PMS.setEnabledSetting
disable
disable
PMS.setEnabledSetting
set-install-location
設置場所の設定
PMS.setInstallLocation
get-max-users
最大ユーザー数
UserManager.getMaxSupportedUsers
例:
1、携帯アプリリスト情報を取得する
adb shell pm list packages
2、インストールパッケージのAPKパスを出力する
adb shell pm path com.android.launcher3
3.パッケージに関連するすべてのデータを削除する:データとキャッシュをクリアする
adb shell pm clear com.android.launcher3
AMコマンド
amすなわちactivity managerは、amコマンドを使用して様々なシステムの動作をシミュレートすることができます.例えば、activityを起動したり、プロセスを強制的に停止したり、ブロードキャストを送信したりすることができます.
一、常用命令
開発者としてadb命令に慣れていないと信じています.では、携帯電話でadbに接続すると、amコマンドで多くの操作ができます.
(1)電話番号10086
adb shell am start -a android.intent.action.CALL -d tel:10086
(2)ウェブサイトwww.gityuanを開く.com
adb shell am start -a android.intent.action.VIEW -d http://gityuan.com
(3)Activityの起動
起動パッケージ名はcom.yuanhh.app,主Activityは.MainActivity、extraデータは「website」をkey、「yuanh.com」をvalueとします.Javaコードでこの機能を完了するには複雑ではありませんが、少なくとも1つのandroid環境が必要です.adbでは、adbウィンドウで次のコマンドを入力するだけで完了します.
am start -n com.yuanhh.app/.MainActivity -es website gityuan.com
amコマンドは、サービス、Broadcast、プロセスの殺し、モニタリングなどの機能を起動することもできます.これらの機能は、デバッグが非常に便利で、amのより詳細な機能について説明します.
4、プロセスを殺す
adb shell am force-stop com.android.fmradio
二、Options
主にActivityコマンドam start[options]を起動してoptionsパラメータを使用し、次にActivityコマンドの[options]パラメータを列挙します.
-D:デバッグ機能の許可
-W:app起動完了待ち
-R:Activity COUNT回繰り返し起動
S:activityを起動する前にforceStopPackage()メソッドを呼び出してappを強制停止する.
-opengl-trace:OpenGL関数を取得するtraceを実行する
-user|current:Appを実行するユーザーを指定します.デフォルトは現在のユーザーです.
-start-profiler:profilerを起動し、結果を送信します.
-P:類似
-start-profiler、appがidle状態になるとprofilingを停止するのとは異なり
-sampling INTERVAL:profilerの設定
サンプリング時間間隔、単位ms;Activityの実装を開始する原理:-Wパラメータが存在する場合、startActivity AndWait()メソッドを呼び出して実行します.そうでない場合、startActivity AssUser()です.
三、応用特例の起動
アプリケーションを起動する方法はpackageName/classNameが一般的ですが、アプリケーションのパッケージ名だけを知っていてactivityを起動する名前を知らない場合は、どうやって起動しますか?
public static void startAppWithPackageName(Activity context, String packagename) {
// APP , Activities、services、versioncode、name
PackageInfo packageinfo = null;
try {
packageinfo = context.getPackageManager().getPackageInfo(packagename, 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
if (packageinfo == null) {
return;
}
// CATEGORY_LAUNCHER Intent
Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
resolveIntent.setPackage(packageinfo.packageName);
// getPackageManager() queryIntentActivities
List<ResolveInfo> resolveinfoList = context.getPackageManager()
.queryIntentActivities(resolveIntent, 0);
Log.i(TAG, "resolveinfoList.size=" + resolveinfoList.size());
if (resolveinfoList.size() == 0) {
return;
}
ResolveInfo resolveinfo = resolveinfoList.iterator().next();
if (resolveinfo != null) {
// packagename = packname
String packageName = resolveinfo.activityInfo.packageName;
// APP LAUNCHER Activity[ :packagename.mainActivityname]
String className = resolveinfo.activityInfo.name;
// LAUNCHER Intent
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
// ComponentName 1:packagename 2:MainActivity
ComponentName cn = new ComponentName(packageName, className);
intent.setComponent(cn);
context.startActivity(intent);
}
}