developer tip

adb에서 패키지의 실행 가능한 활동 이름 가져 오기

optionbox 2020. 11. 13. 08:04
반응형

adb에서 패키지의 실행 가능한 활동 이름 가져 오기


사용에서 패키지에 대한 시작 가능한 활동을 얻는 방법이 adb있습니까? 루팅 되지 않은/data/appappt 전화의 경우 ( 즉, 디렉토리 에서 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

  1. <PKg name>.<activity name> = <com.android.calculator2>.<Calculator>

    .Calculator우리의 활동도 그렇습니다

  2. 두 번째 부분이 패키지 이름과 완전히 다르고 /in out 출력 이전 있던 pkg 이름을 포함하지 않는 것 같으면 두 번째 부분 전체를 주요 활동으로 사용할 수 있습니다.


다음은 앱 패키지 이름 및 실행기 활동을 찾는 또 다른 방법입니다.

1 단계 : 명령 프롬프트에서 "adb logcat"을 시작합니다.

2 단계 : 앱을 엽니 다 (에뮬레이터 또는 실제 장치에서) 여기에 이미지 설명 입력


앱 이름을 검색하는 것만으로도 모든 정보를 제공하지만 자세한 정보 또는 기타 옵션 대신 정보를 선택해야하는 logcat 로그에 ddms를 사용할 수도 있습니다. 아래 이미지를 확인하십시오.

여기에 이미지 설명 입력

참고 URL : https://stackoverflow.com/questions/12698814/get-launchable-activity-name-of-package-from-adb

반응형