65

そのアプリケーションのファイルをcmd.exe使用して、特定のAndroidアプリケーションのメインアクティビティを開始できるようにするコマンドはありますか? .apkAndroidアプリケーションのみをインストールするこのコマンドを知っていることに注意してください:

adb install myapp.apk

このコマンドはエミュレーターにのみインストールmyappされるため、このアプリケーションをエミュレーターから手動で実行する必要があります (アイコンをシングル クリックして実行します)。

私がやりたいのは、アプリケーションをインストールするだけでなく、そのメイン アクティビティも開始するコマンドを使用することです (その.apkファイルしかないので、パッケージ名やアクティビティ名がわからないことに注意してください)。

4

7 に答える 7

91

一度にインストールして実行することはできませんが、adb を使用して、既にインストールされているアプリケーションを起動することはできます。adb shell am start を使用してインテントを起動します。ただし、アプリケーションに正しいインテントを使用する必要があります。いくつかの例:

adb shell am start -a android.intent.action.MAIN -n com.android.settings/.Settings 

設定が起動し、

adb shell am start -a android.intent.action.MAIN -n com.android.browser/.BrowserActivity 

ブラウザが起動します。ブラウザを特定のページに向けたい場合は、これを行います

adb shell am start -a android.intent.action.VIEW -n com.android.browser/.BrowserActivity http://www.google.co.uk

APK 内のアクティビティの名前がわからない場合は、次のようにします。

aapt d xmltree <path to apk> AndroidManifest.xml

出力コンテンツには、次のようなセクションが含まれます。

   E: activity (line=32)
    A: android:theme(0x01010000)=@0x7f080000
    A: android:label(0x01010001)=@0x7f070000
    A: android:name(0x01010003)="com.anonymous.MainWindow"
    A: android:launchMode(0x0101001d)=(type 0x10)0x3
    A: android:screenOrientation(0x0101001e)=(type 0x10)0x1
    A: android:configChanges(0x0101001f)=(type 0x11)0x80
    E: intent-filter (line=33)
      E: action (line=34)
        A: android:name(0x01010003)="android.intent.action.MAIN"
        XE: (line=34)

これにより、メイン アクティビティ (MainWindow) の名前がわかり、実行できるようになりました。

adb shell am start -a android.intent.action.MAIN -n com.anonymous/.MainWindow
于 2011-05-24T10:53:19.577 に答える
15

「adb run myapp.apk」に相当するものを探している場合

この回答に示されているスクリプトを使用できます

(Linux と Mac のみ - おそらく Windows では cygwin を使用)

Linux/Mac ユーザーは、次のような apk を実行するスクリプトを作成することもできます。

次の 3 行を含む「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」を作成できます。

注: これには、パスに aapt が含まれている必要があります。SDK の新しいビルド ツール フォルダーの下にあります。

于 2013-06-25T06:13:32.670 に答える
9

これはシェルスクリプトでの解決策です:

apk="$apk_path"

1.apkをインストール

adb install "$apk"
sleep 1

2. パッケージ名を取得する

pkg_info=`aapt dump badging "$apk" | head -1 | awk -F " " '{print $2}'`
eval $pkg_info > /dev/null

3.アプリを起動

pkg_name=$name
adb shell monkey -p "${pkg_name}" -c android.intent.category.LAUNCHER 1
于 2017-12-04T09:34:58.217 に答える
6

GUIからアプリを起動するadb logcatと、対応するアクション/カテゴリ/コンポーネントが表示される場合があります。

$ adb logcat
[...]
I / ActivityManager(1607):START {act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] flg = 0x10200000 cmp = com.android.browser / .BrowserActivity }pid1792から
[...]

于 2012-01-31T09:27:51.263 に答える