76

を使用してパッケージの起動可能なアクティビティを取得する方法はありadbますか? ルート解除された電話の場合 (つまり、ディレクトリから apk を/data/appappt取得して検査する必要はありません)。

dumpsys を試しましたが、デフォルトの起動可能なアクティビティに関する情報が含まれていません。

ありがとう

4

8 に答える 8

100

から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>
于 2012-10-02T23:48:14.110 に答える
59
$ adb shell pm dump PACKAGE_NAME | grep -A 1 MAIN
于 2016-03-28T03:54:55.850 に答える
14
#!/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
于 2015-09-09T04:57:19.613 に答える
11

リストに載っていなかったので、リストを更新します。

このソリューションでは、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

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

    .Calculator私たちの活動もそうです

  2. 2 番目の部分がパッケージ名と完全に異なってい/て、出力に以前あった pkg 名が含まれていないように見える場合は、2 番目の部分全体をメイン アクティビティとして使用できます。

于 2016-04-25T08:24:28.317 に答える
3

アプリのパッケージ名とランチャーのアクティビティを調べる別の方法を次に示します。

Step1: コマンドプロンプトで「adb logcat」を起動します。

ステップ 2: アプリを開きます (エミュレーターまたは実際のデバイスのいずれか)。 ここに画像の説明を入力

于 2015-02-26T09:31:29.763 に答える
1

また、logcat ログに ddms を使用することもできます。この場合、アプリ名を検索するだけですべての情報が得られますが、詳細やその他のオプションではなく [情報] を選択する必要があります。この下の画像を確認してください。

ここに画像の説明を入力

于 2016-06-29T10:25:49.483 に答える