を使用してパッケージの起動可能なアクティビティを取得する方法はありadb
ますか? ルート解除された電話の場合 (つまり、ディレクトリから apk を/data/app
appt
取得して検査する必要はありません)。
dumpsys を試しましたが、デフォルトの起動可能なアクティビティに関する情報が含まれていません。
ありがとう
から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
#!/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 コマンドライン:
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}}}
主要部分は、最初の行です:
Window #7 Window{39ced4b1 u0 com.android.calculator2/com.android.calculator2.Calculator}:
出力の最初の部分はパッケージ名です:
com.android.calculator2
出力の 2 番目の部分 ( の後/
) は 2 つの場合があります。この場合は次のとおりです。
com.android.calculator2.Calculator
<PKg name>.<activity name>
=
<com.android.calculator2>.<Calculator>
.Calculator
私たちの活動もそうです
2 番目の部分がパッケージ名と完全に異なってい/
て、出力に以前あった pkg 名が含まれていないように見える場合は、2 番目の部分全体をメイン アクティビティとして使用できます。
アプリのパッケージ名とランチャーのアクティビティを調べる別の方法を次に示します。
Step1: コマンドプロンプトで「adb logcat」を起動します。
ステップ 2: アプリを開きます (エミュレーターまたは実際のデバイスのいずれか)。