adb에서 패키지의 실행 가능한 활동 이름 가져 오기
사용에서 패키지에 대한 시작 가능한 활동을 얻는 방법이 adb
있습니까? 루팅 되지 않은/data/app
appt
전화의 경우 ( 즉, 디렉토리 에서 apk를 가져 와서 검사 하지 않고 ).
dumpsys를 시도했지만 기본 실행 가능 활동에 대한 정보가 포함되어 있지 않습니다.
감사
.NET에서 apk 파일을 가져 오기 위해 루트가 필요하지 않습니다 /data/app
. 물론, 해당 디렉토리의 콘텐츠를 나열 할 권한이 없을 수 있지만 다음을 사용하여 APK의 파일 위치를 찾을 수 있습니다.
adb shell pm list packages -f
그런 다음 사용할 수 있습니다 adb pull
.
adb pull <APK path from previous command>
그런 다음 aapt
원하는 정보를 얻으려면 :
aapt dump badging <pulledfile.apk>
$ adb shell pm dump PACKAGE_NAME | grep -A 1 MAIN
Android 7.0부터 adb shell cmd package resolve-activity
명령을 사용 하여 다음과 같이 설치된 앱의 기본 활동을 가져올 수 있습니다 .
adb shell "cmd package resolve-activity --brief com.google.android.calculator | tail -n 1"
com.google.android.calculator/com.android.calculator2.Calculator
#!/bin/bash
#file getActivity.sh
package_name=$1
#launch app by package name
adb shell monkey -p ${package_name} -c android.intent.category.LAUNCHER 1;
sleep 1;
#get Activity name
adb shell logcat -d | grep 'START u0' | tail -n 1 | sed 's/.*cmp=\(.*\)} .*/\1/g'
견본:
getActivity.sh com.tencent.mm
com.tencent.mm/.ui.LauncherUI
목록을 찾지 못했기 때문에 목록을 업데이트했습니다.
이 솔루션을 사용하려면 apk가 설치되어 있어야합니다 .
Windows CMD 라인 :
adb shell dumpsys window windows | findstr <any unique string from your pkg Name>
Linux 터미널 :
adb shell dumpsys window windows | grep -i <any unique string from your Pkg Name>
계산기 패키지의 출력은 다음과 같습니다.
Window #7 Window{39ced4b1 u0 com.android.calculator2/com.android.calculator2.Calculator}:
mOwnerUid=10036 mShowToOwnerOnly=true package=com.android.calculator2 appop=NONE
mToken=AppWindowToken{29a4bed4 token=Token{2f850b1a ActivityRecord{eefe5c5 u0 com.android.calculator2/.Calculator t322}}}
mRootToken=AppWindowToken{29a4bed4 token=Token{2f850b1a ActivityRecord{eefe5c5 u0 com.android.calculator2/.Calculator t322}}}
mAppToken=AppWindowToken{29a4bed4 token=Token{2f850b1a ActivityRecord{eefe5c5 u0 com.android.calculator2/.Calculator t322}}}
WindowStateAnimator{3e160d22 com.android.calculator2/com.android.calculator2.Calculator}:
mSurface=Surface(name=com.android.calculator2/com.android.calculator2.Calculator)
mCurrentFocus=Window{39ced4b1 u0 com.android.calculator2/com.android.calculator2.Calculator}
mFocusedApp=AppWindowToken{29a4bed4 token=Token{2f850b1a ActivityRecord{eefe5c5 u0 com.android.calculator2/.Calculator t322}}}
주요 부분은 First Line입니다 .
Window #7 Window{39ced4b1 u0 com.android.calculator2/com.android.calculator2.Calculator}:
출력의 첫 부분은 패키지 이름입니다.
com.android.calculator2
출력의 두 번째 부분 ( /
)은 다음 두 가지가 될 수 있습니다.
com.android.calculator2.Calculator
<PKg name>.<activity name>
=<com.android.calculator2>.<Calculator>
.Calculator
우리의 활동도 그렇습니다두 번째 부분이 패키지 이름과 완전히 다르고
/
in out 출력 이전 에 있던 pkg 이름을 포함하지 않는 것 같으면 두 번째 부분 전체를 주요 활동으로 사용할 수 있습니다.
다음은 앱 패키지 이름 및 실행기 활동을 찾는 또 다른 방법입니다.
1 단계 : 명령 프롬프트에서 "adb logcat"을 시작합니다.
2 단계 : 앱을 엽니 다 (에뮬레이터 또는 실제 장치에서)
앱 이름을 검색하는 것만으로도 모든 정보를 제공하지만 자세한 정보 또는 기타 옵션 대신 정보를 선택해야하는 logcat 로그에 ddms를 사용할 수도 있습니다. 아래 이미지를 확인하십시오.
참고 URL : https://stackoverflow.com/questions/12698814/get-launchable-activity-name-of-package-from-adb
'developer tip' 카테고리의 다른 글
python argparse를 접두사없이 상호 배타적 인 그룹 인수로 만드는 방법은 무엇입니까? (0) | 2020.11.13 |
---|---|
didReceiveRemoteNotification이 호출되지 않음, iOS 10 (0) | 2020.11.13 |
Pycharm : Python 파일의 일부만 실행 (0) | 2020.11.13 |
NotificationChannel에서 사운드 비활성화 (0) | 2020.11.13 |
MySQL-한 쿼리에서 테이블 당 모든 행을 계산하는 방법 (0) | 2020.11.13 |