hpi*_*que 189 testing android adb
是否可以从控制台停止Android应用程序?就像是:
adb stop com.my.app.package
Run Code Online (Sandbox Code Playgroud)
它会加速我们的测试过程.现在我们每次卸载/安装应用程序以确保手动测试用例以干净状态开始.
小智 520
停止应用程序的简洁方法是:
adb shell am force-stop com.my.app.package
Run Code Online (Sandbox Code Playgroud)
这样您就不必弄清楚进程ID.
Chr*_*Orr 138
编辑:在我写完这篇文章后很久就被接受为答案,该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
这只适用于运行shell时立即拥有root的设备/模拟器.这可能会稍微改进,以便su事先打电话.
否则,你可以(手动,或者我想编写脚本):
pc $ adb -d shell
android $ su
android # ps
android # kill <process id from ps output>
del*_*116 24
首先,将应用程序置于后台(按设备的主页按钮)
然后....在终端....
adb shell am kill com.your.package
Run Code Online (Sandbox Code Playgroud)
Som*_*ere 16
您可以在设备控制台中使用以下命令:pm disable com.my.app.package这将终止它.然后使用,pm enable com.my.app.package以便您可以再次启动它.
Tho*_*asW 10
如果您有权访问应用程序包,则可以使用-r选项进行安装,如果当前作为副作用运行,它将终止该进程.像这样:
adb -d install -r MyApp.apk ; adb -d shell am start -a android.intent.action.MAIN -n com.MyCompany.MyApp/.MyActivity
-r选项保留当前与应用程序关联的数据.但是,如果你想要一个像你提到的干净的石板,你可能不想使用该选项.
如果你定位一个非root设备和/或你的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));
}
}
Run Code Online (Sandbox Code Playgroud)
这样,您可以发出此adb命令来停止您的活动:
adb shell am broadcast -a com.example.TestActivity.STOP
Run Code Online (Sandbox Code Playgroud)
“停止”命令的实现方式为force-stop:停止后台应用程序运行。如果它在前台,它也会停止:例如。
adb shell am force-stop com.android.providers.telephony
Run Code Online (Sandbox Code Playgroud)
清除包裹也会删除其数据,例如。
adb shell pm clear com.android.providers.telephony
Run Code Online (Sandbox Code Playgroud)
会删除你所有的短信
请小心选择哪一个。