Android adb 启动APP
目錄
- 啟動(dòng)命令
- 一 常規(guī)命令 + 包名/activity
- 二 常規(guī)命令 + 包名
- 命令關(guān)閉App
- 獲取包名和activity的路徑
- 代碼獲取
- 1 命令獲取( 需要app運(yùn)行在前臺(tái),停留在啟動(dòng)界面)
- 2命令獲取(先執(zhí)行命令,再點(diǎn)擊app啟動(dòng))
啟動(dòng)命令
一 常規(guī)命令 + 包名/activity
adb shell am start -n package/launch activity說(shuō)明:package 是app的包名(android studio一般是gradle中的applicationId的值)
launch activity 是啟動(dòng)activity的完整路徑(如果和package重疊的話,可簡(jiǎn)寫(xiě))
例如:
applicationId:com.eagle.game
啟動(dòng)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之間是有斜線,簡(jiǎn)寫(xiě)時(shí)注意斜線后的點(diǎn)。
輸出:
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.eagle.game/.ui.StartActivity }
代表啟動(dòng)成功
二 常規(guī)命令 + 包名
adb shell am start -n package這種命令需app的啟動(dòng)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是不會(huì)配置的。
命令關(guān)閉App
例如:adb shell am force-stop com.eagle.game
例如:adb shell pm clear com.eagle.game
獲取包名和activity的路徑
回到第一種命令,關(guān)鍵是包名和actvity的路徑,怎么獲取呢
代碼獲取
從開(kāi)發(fā)者處獲取,gradle中的applicationId就是包名,從AndroidManifest.xml里面獲取包名和啟動(dòng)的activty路徑。
1 命令獲取( 需要app運(yùn)行在前臺(tái),停留在啟動(dòng)界面)
打開(kāi)App,在cmd窗口中輸入以下命令。
adb shell dumpsys window windows | findstr “Current”
如下圖所示,/之前的就是package,之后的就是當(dāng)前的activity, 有些應(yīng)用啟動(dòng)時(shí)包含了歡迎頁(yè)之類的,打開(kāi)App的時(shí)候就自動(dòng)切換了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啟動(dòng))
先輸入:adb shell 回車
再輸入:logcat | grep -i ActivityManager
啟動(dòng)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
命令獲取都需要先啟動(dòng)app,這種情況下,實(shí)際上也用不著通過(guò)命令去啟動(dòng)。一般那種定制系統(tǒng),如電視盒子,定制的平板手機(jī),大屏一體機(jī),沒(méi)有列出某些app,無(wú)法通過(guò)桌面啟動(dòng),在測(cè)試其他廠商的app的情況下可能需要通過(guò)命令去啟動(dòng)。
這種情況下可以先用手機(jī)啟動(dòng)后獲取到包名和activity,再在定制系統(tǒng)中去用adb啟動(dòng)。
說(shuō)明:本文是的實(shí)例是在windows 7 上進(jìn)行的。
總結(jié)
以上是生活随笔為你收集整理的Android adb 启动APP的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python转换窗口无响应_Tkinte
- 下一篇: AndroidJava try-catc