Android ADBツールを使用してアプリケーションを起動する方法は?


回答:


630
adb shell
am start -n com.package.name/com.package.name.ActivityName

または、これを直接使用できます。

adb shell am start -n com.package.name/com.package.name.ActivityName

intent-filtersでフィルタリングするアクションを指定することもできます。

am start -a com.example.ACTION_NAME -n com.package.name/com.package.name.ActivityName 

23
どうもありがとうございました。〜/ .bash_profileのシェル関数を大幅に高速化 function androidrun(){ ant clean debug adb shell am start -n $1/$1.MainActivity }し、使用方法を変更しましたandroidrun com.example.test
AbdullahDiaa

3
adb shell amamコマンドに渡す他のオプションのリストが表示されます。詳細については、developer.android.com
tools / help / adb.html#am

1
@shurane -aオプションを見つけるにはどうすればよいですか?
ericyoung 2013年

21
開始する予定のアクティビティに固有ではなく、デフォルトのアクティビティを実行することは可能ですか?
Android開発者

1
アプリケーションとアクティビティを見つけるのに問題がありました。このパイプラインを使用して、adb logcat | grep --line-buffered ActivityManager | grep --line-buffered表示されたすべてのアプリケーションをリストしました。
At Righ

299

次のパターンに従うことにより、モンキーツールを使用するだけでパッケージ名を指定してアプリケーションを実行できます。

adb shell monkey -p your.app.package.name -c android.intent.category.LAUNCHER 1

コマンドは、アプリケーションのランダム入力を生成するモンキーツールを使用してアプリを実行するために使用されます。コマンドの最後の部分は整数で、アプリ用に生成されたランダム入力の数を指定します。この場合の数は1で、実際にはアプリの起動(アイコンのクリック)に使用されます。


92
ランチャーがデフォルトです。簡略化できますadb shell monkey -p your.app.package.name 1
Androiderson、2015年

3
パッケージ名の代わりにAPKファイル名を使用することは可能ですか?APKファイルがあり、それをインストールして実行できるようにしたい場合、それは可能ですか?
Android開発者

1
エラーが発生した場合:実行するアクティビティが見つかりません。中止しますか?
IgorGanapolsky 2016

3
@IgorGanapolskyアクティビティが見つからない場合、それはサービスアプリであり、アクティビティはまったくありません。
m3nda 2016

1
@IgorGanapolskyサービスの場合は、adb shell am startservice com.some.package.name/.YourServiceSubClassNameこちらを参照してください:stackoverflow.com/a/18703083/211292
ThomasW

123

または、これを使用できます:

adb shell am start -n com.package.name/.ActivityName

76
アクティビティ名を指定せずにそれを行うことは可能ですか?デフォルトのメインアクティビティが開始されますか?
Android開発者

5
@androiddeveloper depodefi から以下のmonkeyコマンドを参照してください:アクティビティ名を指定する必要はありません!
1111161171159459134 2015

8
ActivityNameがわからない場合はどうなりますか?
IgorGanapolsky 2016

2
〜/ android-sdk-linux / build-tools / 20.0.0 / aapt dump badging yourapp.apkを実行すると、次のエントリが一覧表示されます。launchable-activity:name = 'com.company.android.package.YourLaunchableActivity'
JohnyTex

17
monkey -p com.package.name 1経由adb shell
Denys Vitali

60

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の新しいビルドツールフォルダーの下にあります。


Windowsの場合、cygwin(テストなし)で試すことができます
dljava

3
あなたの投稿でAWKを調べました。私は先に進んで、スクリプトを再作成しました。pastebin.com/X7X1SsFa
カイル

2
これは素晴らしいです。これが標準のadbコマンドではない理由は、私たちには決してわかりません。
John Tyree、2014年

次のようにadb-run.shスクリプトでPATHを設定する場合、パスにaaptを含める必要はありません( "android"がそうである限り):PATH = $(dirname $(which android))/。 ./build-tools/20.0.0:$PATH
Steve Lemke

@dljavaなぜこれがplay.google.com/store/apps/details?id=com.amaze.filemanagerで機能しないのですか?
WSS

21

また、もう1つ触れておきます。

あなたがからアプリケーションを起動するとadb shell amそれは自動的にFLAG_ACTIVITY_NEW_TASKフラグ追加動作の変更を行います。コードを見る

たとえば、からPlayストアアクティビティを起動した場合adb shell am、「戻る」ボタン(ハードウェアの戻るボタン)を押してもアプリは起動せず、以前のPlayストアアクティビティがあった場合に起動します(Playストアタスクがなかった場合) 、それからあなたのアプリが必要になります)。FLAG_ACTIVITY_NEW_TASKドキュメントは言う:

現在開始しているアクティビティに対してタスクが既に実行されている場合、新しいアクティビティは開始されません。代わりに、現在のタスクは、それが最後にあった状態で画面の前面に表示されます

そのため、何時間問題があったのかを突き止めるために数時間を費やしました。

したがって、adb shell am FLAG_ACTIVITY_NEW_TASKフラグ追加することに注意してください


1
また、フラグをクリアする方法がないことは言及する価値があります。これは迷惑です
Kedar Paranjape

16

アプリケーションのタイプを把握し、データを入力することで、アプリケーションを開始することもできます。

adb shell am start -d "file:///sdcard/sample.3gp" -t "video/3gp" -a android.intent.action.VIEW

このコマンドは、sample.3gpファイルを再生するために使用可能なビデオプレーヤーを表示します


15

ステップ1:まず、デバイスにインストールされているアプリのすべてのパッケージ名を取得します。以下を使用します。

adb shell pm list packages

ステップ2:すべてのパッケージ名を取得し、adbの使用を開始するものをコピーします。

ステップ3:以下のコマンドで目的のパッケージ名を追加します。

adb shell monkey -p 'your package name' -v 500

例:
adb shell monkey -p com.estrongs.android.pop -v 500 Esエクスプローラーを開始します。


11
これにより、アプリケーションが起動し、500個の疑似ランダムイベントが送信されます。したがって、「500」を置き換えるには「1」を使用する方が良いです。
Lyn

14

〜/ .bash_profile を開き、これらのbash関数をファイルの最後に追加します

function androidinstall(){
   adb install -r ./bin/$1.apk
}
function androidrun(){
   ant clean debug
   adb shell am start -n $1/$1.$2
}

次にAndroidプロジェクトフォルダを開きます

androidinstall app-debug && androidrun com.example.app MainActivity

2
何を説明できますapp-debugか?
JayQuerie.com 2013年

3
@TrevorSenior app-debugはapkファイルのタイトルです。通常、デバッグモードでは、生成されたapkファイルは「APPLICATION NAME-debug.apk」というタイトルになります
AbdullahDiaa

7

monkey --pct-syskeys 0 開発ボード用

この引数がないと、アプリは開発ボード上でキー/ディスプレイなしで開くことができません。

adb shell monkey --pct-syskeys 0 -p com.cirosantilli.android_cheat.textviewbold 1

そしてエラーで失敗します:

SYS_KEYS has no physical keys but with factor 2.0%

HiKey960、Android O AOSPでテスト済み。

から学んだ:https : //github.com/ARM-software/lisa/pull/408

また、猿のテスト:Androidシステムに物理キーがない場合、コマンドに含める必要があるパラメーターは何ですか?


2
adb shell am start -n '<appPackageName>/.<appActitivityName>

例:

adb shell am start -n 'com.android.settings/.wifi.WifiStatusTest'

APK-INFOアプリケーションを使用して、各アプリパッケージに関するアプリアクティビティのリストを確認できます


0

Androidフォトアプリを開き、特定の画像ファイルをパラメーターとして開くには、これを試してください。

adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png

それは最新のアンドロイドで動作します、あなたがあなたがあなたのイメージを開きたい特定のアプリを与えているとき、ポップアップは開いてアプリケーションを選択するようになりません


URLからビデオをストリーミングできるプレーヤーアプリがありますが、このURLをパラメーターとして渡し、そのURLからストリーミングするにはどうすればよいですか?YouTubeからのURLを想定していますか?
ヴィシュヌ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.