是否可以从控制台停止Android应用?类似的东西:
adb stop com.my.app.package
这会加速我们的测试过程。现在我们每次卸载/安装应用程序,以确保手动测试用例以干净状态开始。
答案 0 :(得分:486)
停止应用的简洁方法是:
adb shell am force-stop com.my.app.package
这样您就不必弄清楚进程ID。
答案 1 :(得分:131)
修改:在我撰写此帖后很久就被接受为答案,Android团队am force-stop
命令为implemented,如{{3}所述}}
或者:而不是仅停止应用,因为您提到每次测试运行需要“干净的平板”,您可以使用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>
答案 2 :(得分:21)
首先,将应用程序置于后台(按设备的主页按钮)
然后....在一个终端....
private Point getNearestPoint(List<Point> pointList, Point target) {
Point nearest = null;
double shortestDistance = Double.MAX_VALUE;
double distance = 0;
for(Point p : pointList) {
distance = getDistance(p, target);
if(distance < shortestDistance) {
shortestDistance = distance;
nearest = p;
}
}
return nearest;
}
private double getDistance(Point p1, Point p2) {
return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));
}
答案 3 :(得分:14)
您可以在设备控制台中使用以下内容:pm disable com.my.app.package
这会将其终止。然后使用pm enable com.my.app.package
以便您可以再次启动它。
答案 4 :(得分:9)
如果您有权访问应用程序包,则可以使用-r选项进行安装,如果当前作为副作用运行,它将终止该进程。像这样:
adb -d install -r MyApp.apk ; adb -d shell am start -a android.intent.action.MAIN -n com.MyCompany.MyApp/.MyActivity
-r选项保留当前与应用关联的数据。但是,如果你想要像你提到的那样,你可能不想使用该选项。
答案 5 :(得分:7)
如果你定位一个非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));
}
}
这样,您可以发出此adb命令来停止您的活动:
adb shell am broadcast -a com.example.TestActivity.STOP
答案 6 :(得分:2)
如果您正在寻找的只是杀死一个包
pkill package_name
应该有效
答案 7 :(得分:0)
在eclipse中转到DDMS透视图,然后在“设备”选项卡中单击要在其中杀死它的设备下要杀死的进程。然后你只需按下停止按钮即可终止该过程。
我不确定你是如何从命令行工具那样做的,但必须有办法。也许你是通过adb shell来实现的......
答案 8 :(得分:0)
adb shell killall -9 com.your.package.name
根据MAC“强制访问控制” 您可能有权终止进程 不是由root
启动的玩得开心!
答案 9 :(得分:0)
我在Linux上尝试过所有答案,但无法在无根设备API级别23上进行调试, 所以我找到了调试的替代方法 从开发者选项->应用程序部分->选中不保留活动 这样,当您将应用程序置于后台时,它就会被杀死
P.S记得在调试完成后取消选中它
答案 10 :(得分:0)
“停止”命令实现为force-stop
;停止后台应用程序运行。如果它在前台,它也会停止:例如。
adb shell am force-stop com.android.providers.telephony
清除包也会删除它们的数据,例如。
adb shell pm clear com.android.providers.telephony
会删除你所有的短信
小心你选择哪一个。
答案 11 :(得分:-1)
pkill NAMEofAPP
非根棉花糖,termux&amp;终端模拟器。