2010-02-12 112 views
5

在Android應用程序的開發,我也非常頻繁如下:上傳到手機後自動啓動Android應用程序?

  1. 運行「螞蟻重新安裝」編譯並上傳應用程序到仿真器。
  2. 切換到模擬器窗口。
  3. 點擊我剛剛上傳的包來運行並測試它。

有什麼辦法,我可以告訴模擬器手機在運行我剛剛上傳的包?也許我可以在運行我的編譯腳本後發送給它的「adb」命令?作爲最後的手段,我想我可以運行一些模擬鼠標點擊的東西。

+0

大的第一個問題和歡迎。 – 2010-02-12 04:22:32

回答

3

您想使用am命令。假設你有一個清單,看起來有點像這樣:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.MyApp"> 
    <application android:icon="@drawable/icon"> 
     <activity class=".MyMainActivity" android:label="@string/app_name"> 
      <intent-filter> 
       <action android:value="android.intent.action.MAIN" /> 
       <category android:value="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
    ... 
</manifest> 

你將開始與:

adb shell am start -a android.intent.action.MAIN -n com.example.MyApp/.MyMainActivity 

雖然你可能想告訴它要等到它準備好:

adb wait-for-device shell am start -a android.intent.action.MAIN -n com.example.MyApp/.MyMainActivity 

基本上你只是發射一個叫做Intent的軟件,它會調用你的軟件包的主要Activity

完整的文檔(從運行時--help)是:

usage: am [start|broadcast|instrument|profile] 
     am start [-D] INTENT 
     am broadcast INTENT 
     am instrument [-r] [-e <ARG_NAME> <ARG_VALUE>] [-p <PROF_FILE>] 
       [-w] <COMPONENT> 
     am profile <PROCESS> [start <PROF_FILE>|stop] 

     INTENT is described with: 
       [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>] 
       [-c <CATEGORY> [-c <CATEGORY>] ...] 
       [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...] 
       [--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...] 
       [-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...] 
       [-n <COMPONENT>] [-f <FLAGS>] [<URI>] 
+1

感謝您提供豐富的答案! :-)我可能不會從幫助文件中解決這個問題。這爲我節省了很多時間。要添加到此,請在編譯/安裝應用程序之前先調用「adb shell input keyevent 3&」,以便先將仿真器切換到主屏幕。密集運行的應用程序會使應用程序上傳速度變慢。 – BobbyJim 2010-02-15 19:51:18

+0

沒問題。花了一點時間才弄明白,但是我知道這是可能的,因爲Eclipse可以做到這一點。 – 2010-02-16 20:45:47

相關問題