1. 程式人生 > >如何使用adb shell命令啟動一個安裝好的apk

如何使用adb shell命令啟動一個安裝好的apk

           

                前幾天在給平板做完cts測試之後平板的觸屏失效了,後來經理給了一個解決方案,就是把平板的觸屏韌體刷一下。接著問題就來了,既然觸屏失效了,那麼應該如何啟動一個安裝好的apk呢?下面就是步驟了,大家可以參考一下:

      1、首先確定你的apk已經安裝好了,至於怎麼確定呢,我這給你推薦一個很笨的辦法:

             既然你無法確定是否已經安裝好了,就乾脆把apk重新安裝一遍,命令如下:

            adb install -r apk檔名稱.apk,其中 -r的意思就是重新安裝。

      2、這下子apk安裝好了,那我們就開始啟動吧。

             有人可能搜尋到這樣一個命令:adb shell  am   start   pkg/.MainActivity

             問題就來了,那個pkg是什麼意思呢?很多人可能會把它當作app的名字(我就是在這個地方被坑了),實際上他不  是app的名字,是你安裝的apk的應用的名字。還有後面的.MainActivity是什麼呢?有android基礎的人都知道一個應用程式的啟動肯定會包含Activity的啟動,這下就該明白了吧,它就是應用程式所對應的Activity的名字。

             說了這麼多,那麼這兩個引數如何獲取呢,請輸入:

              adb shell dumpsys package>package.txt,然後開啟package.txt,你會看到很長的資訊:

<ol start="1"><li><span>Libraries:  </span></li><li class="alt"><span>  </span></li><li><span>    </span></li><li class="alt"><span>    ...  </span></li><li><span>  </span></li><li class="alt"><span>Features:  </span></li><li><span>  </span></li><li class="alt"><span>   </span></li><li><span>    ...  </span></li><li class="alt"><span>  </span></li><li><span>Activity Resolver Table:  </span></li><li class="alt"><span>  </span></li><li><span>  Full MIME Types:  </span></li><li class="alt"><span>  </span></li><li><span>    ...  </span></li><li class="alt"><span>  </span></li><li><span>  MIME Typed Actions:  </span></li><li class="alt"><span>  </span></li><li><span>    ...  </span></li><li class="alt"><span>  </span></li><li><span>Receiver Resolver Table:  </span></li><li class="alt"><span>  </span></li><li><span>  Full MIME Types:  </span></li><li class="alt"><span>  </span></li><li><span>  </span></li><li class="alt"><span>    ...  </span></li><li><span>  </span></li><li class="alt"><span>  Non-Data Actions:  </span></li><li><span>  </span></li><li class="alt"><span>    ...  </span></li><li><span>  </span></li><li class="alt"><span>Service Resolver Table:  </span></li><li><span>  </span></li><li class="alt"><span>  Full MIME Types:  </span></li><li><span>  </span></li><li class="alt"><span>        </span></li><li><span>    ...  </span></li><li class="alt"><span>  </span></li><li><span>  Base MIME Types:  </span></li><li class="alt"><span>  </span></li><li><span>  </span></li><li class="alt"><span>    ...  </span></li><li><span>  </span></li><li class="alt"><span>  Non-Data Actions:  </span></li><li><span>  </span></li><li class="alt"><span>  </span></li><li><span>    ...  </span></li><li class="alt"><span>  </span></li><li><span>  MIME Typed Actions:  </span></li><li class="alt"><span>  </span></li><li><span>    ...  </span></li><li class="alt"><span>  </span></li><li><span>Preferred Activities User 0:  </span></li><li class="alt"><span>  </span></li><li><span>  </span></li><li class="alt"><span>    ...  </span></li><li><span>  </span></li><li class="alt"><span>Permissions:  </span></li><li><span>  </span></li><li class="alt"><span>  </span></li><li><span>    ...  </span></li><li class="alt"><span>  </span></li><li><span>Registered ContentProviders:  </span></li><li class="alt"><span>  </span></li><li><span>    ...   </span></li><li class="alt"><span>  </span></li><li><span>ContentProvider Authorities:  </span></li><li class="alt"><span>  </span></li><li><span>    ...  </span></li><li class="alt"><span>  </span></li><li><span>Shared users:  </span></li><li class="alt"><span>  </span></li><li><span>    ...  </span></li><li class="alt"><span>  </span></li><li><span>  </span></li><li class="alt"><span>Settings parse messages:  </span></li><li><span>  </span></li><li class="alt"><span>Read completed successfully: 149 packages, 12 shared uids  </span></li><li><span>  </span></li><li class="alt"><span>    ...  </span></li><li><span>  </span></li><li class="alt"><span>Package warning messages:  
</span></li></ol>
          接下來你就去找了,找到對應的app的應用名和activity名字,主要在Activity Resolver Table這個下面找,這裡有很多資訊,列舉一段:
        2684ef80 com.google.android.gms/.plus.sharebox.ShareBoxActivity filter 2684f058
        26897268 com.google.android.talk/com.google.android.apps.babel.phone.ShareIntentActivity filter 26897488
        268ad568 com.mobisystems.editor.office_registered/com.mobisystems.office.DownloadActivity filter 268ad610
        268af1b8 com.mobisystems.editor.office_registered/com.mobisystems.office.mail.viewer.MessageViewer filter 268af430
        26937770 com.adobe.reader/.services.cpdf.ARCreatePDFActivity filter 269378b8
        269481a8 com.android.bluetooth/.opp.BluetoothOppLauncherActivity filter 26948318
        2695a088 com.android.chrome/com.google.android.apps.chrome.Main filter 2695a568
        26972190 com.google.android.apps.docs/.app.SendTextToClipboardActivity filter 26972278
        267d7cc0 com.android.htmlviewer/.HTMLViewerActivity filter 267c8550
        26a1e5c8 com.google.android.apps.plus/.phone.SignOnActivity filter 26a1e868
        26a1e5c8 com.google.android.apps.plus/.phone.SignOnActivity filter 26a1ed60
        26a1e5c8 com.google.android.apps.plus/.phone.SignOnActivity filter 26a1ee30
        26a366a0 com.dynamixsoftware.printhand/.ui.phone.ActivityDetails filter 26a36750
        26a37868 com.dynamixsoftware.printhand/.ui.ActivityPreviewFiles filter 26a37918
        26a37868 com.dynamixsoftware.printhand/.ui.ActivityPreviewFiles filter 26a37ee8
        26a52c60 com.twitter.android/.DMRequestInboxActivity filter 26a52de8
        26a53208 com.twitter.android/.MessagesActivity filter 26a53470
        26a54010 com.twitter.android/.composer.TextFirstComposerActivity filter 26a542b0
        26a55448 com.twitter.android/.DMConversationActivity filter 26a55598
        26a7bef8 com.facebook.katana/.activity.composer.ImplicitShareIntentHandler filter 26a7bfb8
        26db15d8 com.evernote.skitch/.app.marshallers.SkitchPlainTextMarshaller filter 26e30428


找到之後,再用adb shell命令啟動,adb shell  am   start   pkg/.MainActivity,比如

adb shell am  start com.facebook.katana/.activity.composer.ImplicitShareIntentHandler

好了,接下來就能看到你的apk在螢幕上執行起來了

最後在扯扯剛開始提到的那個問題,既然你的螢幕失效了,那麼該如何點選執行起來的apk呢?買一個usb otg,並且你的裝置支援這個功能,然後插上滑鼠,盡情的操作吧。

這是我的第一篇部落格,希望能幫到遇到此類問題的人,但是錯誤在所難免,歡迎大家批評指正!