回答:
編集:私がこの投稿を書いて、それが回答として受け入れられたずっと前に、この回答で述べたように、am force-stop
コマンドはAndroidチームによって実装されました。
また:むしろあなたは、あなたが使用することができ、各テスト実行のための「白紙の状態」を望む言及以来ちょうど、アプリを停止するよりもadb shell pm clear com.my.app.package
、アプリケーション・プロセスを停止する、とそのアプリのために保存されているすべてのデータをクリア。
Linuxを使用している場合:
adb shell ps | grep com.myapp | awk '{print $2}' | xargs adb shell kill
これは、シェルを実行するとすぐにルートを持つデバイス/エミュレータでのみ機能します。それはおそらく、su
事前に呼び出すように少し調整することができます。
それ以外の場合は、(手動で、または私はスクリプトで記述したと思います)次のことができます。
pc $ adb -d shell
android $ su
android # ps
android # kill <process id from ps output>
アプリを停止するクリーンな方法は次のとおりです。
adb shell am force-stop com.my.app.package
この方法では、プロセスIDを把握する必要はありません。
force-stop
コマンドが存在する前に、上記の回答を書いた。私はこれを指すように私の答えを更新しました。
Android 9.0 API Level 28
は[ 最近のアプリ]に引き続き表示されPID
ます。バックグラウンドアプリからでもアプリを完全に停止する方法を知っていますか?
まず、アプリをバックグラウンドに配置します(デバイスのホームボタンを押します)
次に....ターミナルで...
adb shell am kill com.your.package
デバイスコンソールから次のコマンドを使用できますpm disable com.my.app.package
。これにより強制終了されます。次に、pm enable com.my.app.package
それを再起動できるように使用します。
adb shell
を実行してから、su
最初に実行する必要があります。
アプリケーションパッケージにアクセスできる場合は、-rオプションを使用してインストールできます。現在、副作用として実行されている場合は、プロセスが強制終了されます。このような:
adb -d install -r MyApp.apk ; adb -d shell am start -a android.intent.action.MAIN -n com.MyCompany.MyApp/.MyActivity
-rオプションは、現在アプリに関連付けられているデータを保持します。ただし、あなたが言及したような白紙の状態が必要な場合は、そのオプションを使用したくない場合があります。
ルート権限を取得されていないデバイスをターゲットにしている場合や、APKに停止したくないサービスがある場合、他のソリューションは機能しません。
この問題を解決するために、アクティビティに追加したブロードキャストメッセージレシーバーを使用してそれを停止しました。
public class TestActivity extends Activity {
private static final String STOP_COMMAND = "com.example.TestActivity.STOP";
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
TestActivity.this.finish();
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//other stuff...
registerReceiver(broadcastReceiver, new IntentFilter(STOP_COMMAND));
}
}
そうすれば、次のadbコマンドを発行してアクティビティを停止できます。
adb shell am broadcast -a com.example.TestActivity.STOP
あなたが探しているすべてがパッケージを殺すことであるなら
pkill package_name
うまくいくはず
adb shell killall -9 com.your.package.name
MACの「強制アクセス制御」によると、おそらくrootによって開始されていないプロセスを強制終了する権限があります
楽しんで!
pkill NAMEofAPP
非根ざしマシュマロ、termux&ターミナルエミュレーター。