Android adb 启动APP
目錄
- 啟動命令
- 一 常規(guī)命令 + 包名/activity
- 二 常規(guī)命令 + 包名
- 命令關(guān)閉App
- 獲取包名和activity的路徑
- 代碼獲取
- 1 命令獲取( 需要app運(yùn)行在前臺,停留在啟動界面)
- 2命令獲取(先執(zhí)行命令,再點(diǎn)擊app啟動)
啟動命令
一 常規(guī)命令 + 包名/activity
adb shell am start -n package/launch activity說明:package 是app的包名(android studio一般是gradle中的applicationId的值)
launch activity 是啟動activity的完整路徑(如果和package重疊的話,可簡寫)
例如:
applicationId:com.eagle.game
啟動activity完整的路徑是com.eagle.game.ui.StartActivity
具體的命令為:
adb shell am start -n com.eagle.game/com.eagle.game.ui.StartActivity或
adb shell am start -n com.eagle.game/.ui.StartActivity注意:包名和activity之間是有斜線,簡寫時(shí)注意斜線后的點(diǎn)。
輸出:
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.eagle.game/.ui.StartActivity }
代表啟動成功
二 常規(guī)命令 + 包名
adb shell am start -n package這種命令需app的啟動activity的intent-filter中配置屬性:
<category android:name=“android.intent.category.DEFAULT”/>
即:
<activityandroid:name=".ui.StartActivity"android:banner="@drawable/gs_ic_launcher"android:icon="@drawable/gs_ic_launcher"android:label="@string/app_name"android:theme="@style/AppWelcome"android:logo="@drawable/gs_ic_launcher"android:screenOrientation="landscape"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /><category android:name="android.intent.category.DEFAULT"/></intent-filter></activity>但為了app的安全以及合規(guī),一般是app是不會配置的。
命令關(guān)閉App
例如:adb shell am force-stop com.eagle.game
例如:adb shell pm clear com.eagle.game
獲取包名和activity的路徑
回到第一種命令,關(guān)鍵是包名和actvity的路徑,怎么獲取呢
代碼獲取
從開發(fā)者處獲取,gradle中的applicationId就是包名,從AndroidManifest.xml里面獲取包名和啟動的activty路徑。
1 命令獲取( 需要app運(yùn)行在前臺,停留在啟動界面)
打開App,在cmd窗口中輸入以下命令。
adb shell dumpsys window windows | findstr “Current”
如下圖所示,/之前的就是package,之后的就是當(dāng)前的activity, 有些應(yīng)用啟動時(shí)包含了歡迎頁之類的,打開App的時(shí)候就自動切換了activity,那用這種方法就獲取不了需要的activity。
C:\Users\Administrator>adb shell dumpsys window windows | findstr “Current”
mCurrentFocus=Window{64177ed u0 com.eagle.game/com.eagle.game.ui.StartActivity}
2命令獲取(先執(zhí)行命令,再點(diǎn)擊app啟動)
先輸入:adb shell 回車
再輸入:logcat | grep -i ActivityManager
啟動app。
注意留意輸出內(nèi)容,可能刷得比較快。
在log中“ ActivityManager: START”之后的部分就含有am 命令需要的package和launch activity。如:
2129 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 hwFlg=0x10 cmp=com.eagle.game/.ui.StartActivity bnds=[288,396][540,690]} from uid 10063
中的com.eagle.game/.ui.StartActivity
命令獲取都需要先啟動app,這種情況下,實(shí)際上也用不著通過命令去啟動。一般那種定制系統(tǒng),如電視盒子,定制的平板手機(jī),大屏一體機(jī),沒有列出某些app,無法通過桌面啟動,在測試其他廠商的app的情況下可能需要通過命令去啟動。
這種情況下可以先用手機(jī)啟動后獲取到包名和activity,再在定制系統(tǒng)中去用adb啟動。
說明:本文是的實(shí)例是在windows 7 上進(jìn)行的。
總結(jié)
以上是生活随笔為你收集整理的Android adb 启动APP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python转换窗口无响应_Tkinte
- 下一篇: android sina oauth2.