콘솔에서 Android 앱 중지
콘솔에서 안드로이드 앱을 정지할 수 있습니까?다음과 같은 경우:
adb stop com.my.app.package
그렇게 되면 테스트 과정이 매우 빨라질 것입니다.지금은 매번 앱을 제거/설치하여 수동 테스트 케이스가 깨끗한 상태로 시작하는지 확인합니다.
앱을 중지하는 깨끗한 방법은 다음과 같습니다.
adb shell am force-stop com.my.app.id
이렇게 하면 프로세스 ID를 파악할 필요가 없습니다.
편집 : 제가 이 게시물을 작성한 지 오래되어 답으로 받아들여졌습니다.am force-stop
명령어는 이 답변에서 언급된 것처럼 안드로이드 팀에 의해 구현되었습니다.
또는: 단순히 앱을 중단하는 것이 아니라, 테스트 실행 시마다 "클린 슬레이트"를 원한다고 언급했으므로, 당신은 다음을 사용할 수 있습니다.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 kill com.your.package
에서 를(를) 할 수 pm disable com.my.app.package
죽이게 될 겁니다그럼 사용.pm enable com.my.app.package
다시 시작할 수 있도록 말입니다.
응용 프로그램 패키지에 액세스할 수 있는 경우 -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
은 "stop" 됩니다.force-stop
; 백그라운드 앱의 실행을 중지합니다.만약 그것이 전경에 있다면, 그것은 또한 멈출 것입니다: 예를 들어.
adb shell am force-stop com.android.providers.telephony
패키지를 지우면 해당 데이터도 삭제됩니다.
adb shell pm clear com.android.providers.telephony
당신의 모든 SMS를 삭제할 것입니다.
어느 쪽을 고르는지 조심하세요.
adb shell killall -9 com.your.package.name
MAC "mandatory access control"에 따르면 루트에 의해 시작되지 않은 프로세스를 죽일 수 있는 권한이 있을 수 있습니다.
재미있게 보내!
당신이 원하는 것이 소포를 죽이는 것뿐이라면
pkill package_name
되야 할
저는 리눅스에서 모든 답변을 시도했지만 루트가 없는 장치 API 레벨 23에서 디버깅할 수 있는 것은 아무것도 없었습니다. 그래서 개발자 옵션에서 디버깅을 위한 대안을 찾았습니다 -> 앱 섹션 -> 앱을 백그라운드에 둘 때마다 작업을 그렇게 유지하지 않음을 선택합니다.
추신: 디버깅을 마친 후에는 반드시 선택을 취소해야 합니다.
Eclipse(일식)에서 DDMS 관점으로 이동한 후 장치 탭에서 삭제할 장치 아래에서 삭제할 프로세스를 클릭합니다.그러면 중지 버튼만 누르면 프로세스가 종료됩니다.
명령 줄 도구에서 어떻게 이걸 할지는 모르겠지만 방법이 있을 겁니다.어쩌면 애드비 셸을 통해서 할 수도 있습니다.
이것은 제가 사용한 것입니다.
adb shell pidof com.payjoy.status | xargs adb shell kill
pkill NAMEofAPP
비근본 마시멜로, 터먹스 및 터미널 에뮬레이터.
언급URL : https://stackoverflow.com/questions/3117095/stopping-an-android-app-from-console
'programing' 카테고리의 다른 글
선택2()는 함수가 아닙니다. (0) | 2023.10.05 |
---|---|
창 관리자 충돌에 첨부되지 않은 보기 (0) | 2023.10.05 |
ActiveRecord 마이그레이션에서 SQL 문을 병렬로 안전하게 실행하려면 어떻게 해야 합니까? (0) | 2023.10.05 |
XML 스키마를 프로그램적으로 시각화하는 방법은? (0) | 2023.10.05 |
명령줄 매개 변수 읽기 (0) | 2023.10.05 |