안드로이드 ADB 도구를 사용하여 응용 프로그램을 시작하는 방법은 무엇입니까?


답변:


630
adb shell
am start -n com.package.name/com.package.name.ActivityName

또는 이것을 직접 사용할 수 있습니다.

adb shell am start -n com.package.name/com.package.name.ActivityName

인 텐트 필터로 필터링 할 동작을 지정할 수도 있습니다.

am start -a com.example.ACTION_NAME -n com.package.name/com.package.name.ActivityName 

23
정말 고마워요. ~ / .bash_profile에서 쉘 기능을 훨씬 더 빠르게 function androidrun(){ ant clean debug adb shell am start -n $1/$1.MainActivity }사용하도록했습니다.androidrun com.example.test
AbdullahDiaa

3
adb shell amam명령 에 전달할 다른 옵션 목록을 제공합니다 . 당신은 더 많은 알 수 developer.android.com/tools/help/adb.html#am
Ehtesh Choudhury의에게

1
@shurane 옵션을 어떻게 찾을 수 있습니까?
ericyoung

21
어떤 액티비티를 시작해야 하는가에 따라 기본 액티비티를 실행할 수 있습니까?
안드로이드 개발자

1
응용 프로그램 및 활동을 찾는 데 문제가있었습니다. 이 파이프 라인 adb logcat | grep --line-buffered ActivityManager | grep --line-buffered을 사용하여 표시된 모든 응용 프로그램을 나열했습니다.
Att Righ

299

다음 패턴을 따라 원숭이 도구를 사용하여 패키지 이름을 지정하는 응용 프로그램을 실행할 수 있습니다 .

adb shell monkey -p your.app.package.name -c android.intent.category.LAUNCHER 1

명령은 응용 프로그램에 대한 임의의 입력을 생성하는 원숭이 도구를 사용하여 응용 프로그램을 실행하는 데 사용됩니다. 명령의 마지막 부분은 정수로, 앱에 대해 생성 된 임의의 입력 수를 지정합니다. 이 경우 숫자는 1이며, 실제로 앱을 시작하는 데 사용됩니다 (아이콘 클릭).


91
실행기는 기본입니다. 당신은 단순화 할 수 있습니다adb shell monkey -p your.app.package.name 1
Androiderson

3
패키지 이름 대신 APK 파일 이름을 사용할 수 있습니까? APK 파일이 있는데 설치 및 실행할 수 있기를 원합니까?
안드로이드 개발자

1
오류가 발생하면 어떻게됩니까? 실행 된 활동이 없습니다. 중단 ?
IgorGanapolsky

3
@IgorGanapolsky 활동이 없으면 서비스 앱이며 활동이 없습니다.
m3nda

1
@IgorGanapolsky 서비스 사용 인 adb shell am startservice com.some.package.name/.YourServiceSubClassName경우 여기를 참조하십시오 : stackoverflow.com/a/18703083/211292
ThomasW

122

또는 이것을 사용할 수 있습니다 :

adb shell am start -n com.package.name/.ActivityName

75
기본 주 활동이 시작되도록 활동 이름을 지정하지 않고 수행 할 수 있습니까?
Android 개발자

5
@androiddeveloper 참고 항목 원숭이 에서 아래 명령을 depodefi : 필요가 활동 이름을 지정하기 위해!
1111161171159459134 8

8
ActivityName을 모르면 어떻게합니까?
IgorGanapolsky

2
실행 ~ / 안드로이드 SDK - 리눅스 / 빌드 도구 / 20.0.0 / 다음 항목을 나열합니다 aapt에 덤프 배지의 yourapp.apk : 실행 가능한 활동 : 이름 = 'com.company.android.package.YourLaunchableActivity'
JohnyTex

17
monkey -p com.package.name 1viaadb shell
Denys Vitali

60

linux / mac 사용자는 다음과 같은 방법으로 apk를 실행하는 스크립트를 만들 수도 있습니다.

다음 세 줄로 "adb-run.sh"라는 파일을 만듭니다.

pkg=$(aapt dump badging $1|awk -F" " '/package/ {print $2}'|awk -F"'" '/name=/ {print $2}')
act=$(aapt dump badging $1|awk -F" " '/launchable-activity/ {print $2}'|awk -F"'" '/name=/ {print $2}')
adb shell am start -n $pkg/$act

그런 다음 "chmod + x adb-run.sh"를 실행 파일로 만듭니다.

이제 간단하게 할 수 있습니다 :

adb-run.sh myapp.apk

여기서 이점은 패키지 이름이나 실행 가능한 활동 이름을 알 필요가 없다는 것입니다. 마찬가지로 "adb-uninstall.sh myapp.apk"를 만들 수 있습니다

참고 :이를 위해서는 경로에 적응해야합니다. SDK의 새 빌드 도구 폴더에서 찾을 수 있습니다.


Windows 용 당신은 (테스트되지 않은) Cygwin에서 함께 시도 할 수 있습니다
dljava을

3
귀하의 게시물로 인해 AWK를 조회했습니다. 계속해서 스크립트를 다시 작성했습니다. pastebin.com/X7X1SsFa
Kyle

2
대단하네요. 이것이 우리가 결코 알지 못하는 표준 adb 명령이 아닌 이유.
John Tyree

adb-run.sh 스크립트에서 PATH를 다음과 같이 설정 한 경우 ( "android"가있는 한) 경로에 적응할 필요가 없습니다. PATH = $ (dirname $ (which android)) /. ./build-tools/20.0.0:$PATH
Steve Lemke

@dljava 왜 이것이 play.google.com/store/apps/details?id=com.amaze.filemanager에서 작동하지 않습니까?
WSS

21

또한 한 가지 더 언급하고 싶습니다.

당신이에서 응용 프로그램을 시작하면 adb shell am, 자동으로 FLAG_ACTIVITY_NEW_TASK 플래그 추가 행동 변화한다. 코드를 참조하십시오 .

예를 들어에서에서 Play 스토어 액티비티를 실행하는 경우 adb shell am' 뒤로 '버튼 (하드웨어 뒤로 버튼)을 눌러도 앱이 표시되지 않고 일부 앱이있는 경우 이전 Play 스토어 액티비티가 표시됩니다 ( 그런 다음 앱이 필요합니다). FLAG_ACTIVITY_NEW_TASK 설명서 는 다음과 같이 말합니다.

현재 시작중인 활동에 대해 태스크가 이미 실행중인 경우 새 활동이 시작되지 않습니다. 대신, 현재 작업은 마지막 상태로 화면 전면으로 이동합니다.

이로 인해 몇 시간 동안 무엇이 잘못되었는지 알아 냈습니다.

따라서 adb shell am FLAG_ACTIVITY_NEW_TASK 플래그추가하십시오 .


1
또한 성가신 플래그를 지울 방법이 없다고 언급 할 가치가 있습니다.
Kedar Paranjape

16

애플리케이션 유형을 알고 데이터를 제공하여 애플리케이션을 시작할 수도 있습니다.

adb shell am start -d "file:///sdcard/sample.3gp" -t "video/3gp" -a android.intent.action.VIEW

이 명령은 사용 가능한 비디오 플레이어를 표시하여 sample.3gp 파일 을 재생 합니다


15

1 단계 : 먼저 다음을 사용하여 장치에 설치된 앱의 모든 패키지 이름을

adb shell pm list packages

가져옵니다. 2 단계 : 모든 패키지 이름을 가져옵니다 . adb 사용을 시작하려는 이름을 복사 합니다.

3 단계 : 아래 명령에서 원하는 패키지 이름을 추가하십시오.

adb shell monkey -p 'your package name' -v 500

예를 들어 :
adb shell monkey -p com.estrongs.android.pop -v 500 Es 탐색기를 시작합니다.


11
그러면 응용 프로그램이 시작되고 500 개의 의사 랜덤 이벤트가 전송됩니다. 따라서 '1'을 사용하여 '500'을 바꾸는 것이 좋습니다.
Lyn

14

~ / .bash_profile을 하고 파일의 끝이 bash는 기능을 추가

function androidinstall(){
   adb install -r ./bin/$1.apk
}
function androidrun(){
   ant clean debug
   adb shell am start -n $1/$1.$2
}

그런 다음 Android 프로젝트 폴더를 엽니 다

androidinstall app-debug && androidrun com.example.app MainActivity

2
무엇을 설명 할 수 있습니까 app-debug?
JayQuerie.com 2

3
@TrevorSenior app-debug는 apk 파일의 제목입니다. 일반적으로 디버그 모드에서 생성 된 apk 파일의 제목은 "APPLICATION NAME-debug.apk"
AbdullahDiaa

7

monkey --pct-syskeys 0 개발 보드 용

이 인수가 없으면 키 / 표시가없는 개발 보드에서 앱이 열리지 않습니다.

adb shell monkey --pct-syskeys 0 -p com.cirosantilli.android_cheat.textviewbold 1

오류와 함께 실패합니다.

SYS_KEYS has no physical keys but with factor 2.0%

HiKey960, Android O AOSP에서 테스트되었습니다.

https://github.com/ARM-software/lisa/pull/408 에서 배웠습니다.

또한 문의 : monkey test : 안드로이드 시스템에 물리적 키가없는 경우 명령에 매개 변수를 포함 해야하는 것은 무엇입니까


2
adb shell am start -n '<appPackageName>/.<appActitivityName>

전의:

adb shell am start -n 'com.android.settings/.wifi.WifiStatusTest'

APK-INFO 애플리케이션을 사용하여 각 앱 패키지와 관련된 앱 활동 목록을 알 수 있습니다.


0

안드로이드 사진 앱을 열고 특정 이미지 파일을 매개 변수로 열려면 이것을 사용해보십시오.

adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png

최신 안드로이드에서 작동하며 이미지를 열 특정 응용 프로그램을 제공 할 때 열려있는 응용 프로그램을 선택하지 않습니다.


URL에서 비디오를 스트리밍 할 수있는 플레이어 응용 프로그램이 있습니다.이 URL을 매개 변수로 전달하고 해당 URL에서 스트리밍하는 방법은 무엇입니까? 유튜브의 URL을 가정 해 봅시다.
Vishnu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.