adb shell am 的用法

來源:互聯網
上載者:User

標籤:

 使用此命令可以從cmd控制台啟動 activity, services;發送 broadcast等等: C:\Users\Administrator>adb shell am usage: am [subcommand] [options]
    start an Activity: am start [-D] [-W] <INTENT>         -D: enable debugging         -W: wait for launch to complete
    start a Service: am startservice <INTENT>
    send a broadcast Intent: am broadcast <INTENT>
    start an Instrumentation: am instrument [flags] <COMPONENT>         -r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT)         -e <NAME> <VALUE>: set argument <NAME> to <VALUE>         -p <FILE>: write profiling data to <FILE>         -w: wait for instrumentation to finish before returning
    start profiling: am profile <PROCESS> start <FILE>     stop profiling: am profile <PROCESS> stop
    start monitoring: am monitor [--gdb <port>]         --gdb: start gdbserv on the given port at crash/ANR
    <INTENT> specifications include these flags:         [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]         [-c <CATEGORY> [-c <CATEGORY>] ...]         [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]         [--esn <EXTRA_KEY> ...]         [--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]         [-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]         [-n <COMPONENT>] [-f <FLAGS>]         [--grant-read-uri-permission] [--grant-write-uri-permission]         [--debug-log-resolution]         [--activity-brought-to-front] [--activity-clear-top]         [--activity-clear-when-task-reset] [--activity-exclude-from-recents]         [--activity-launched-from-history] [--activity-multiple-task]         [--activity-no-animation] [--activity-no-history]         [--activity-no-user-action] [--activity-previous-is-top]         [--activity-reorder-to-front] [--activity-reset-task-if-needed]         [--activity-single-top]         [--receiver-registered-only] [--receiver-replace-pending]         [<URI>]  使用執行個體:如啟動一個 Activity: 格式:adb shell am start -n 包名/包名+類名(-n 類名,-a action,-d date,-m MIME-TYPE,-c category,-e 擴充資料,等)。 執行個體1:C:\Users\Administrator>adb shell am start -n com.android.camera/.Camera Starting: Intent { cmp=com.android.camera/.Camera } 執行個體2:(帶extra 的 intent)C:\Users\Administrator>adb shell am start -n com.android.camera/.Camera -e thisKey thisIsValue Starting: Intent { cmp=com.android.camera/.Camera (has extras) }其中 extra 的 key 為 abc ,value 為字串 "hello" 還可以發送命令類比手機低電環境:

執行個體:

adb shell am broadcast -a android.intent.action.BATTERY_CHANGED --ei "level" 3 --ei "scale" 100

 

Android中adb push和adb install的使用區別 Dreamtale 2014-03-10 23:41:44本篇文章由史迎春(@三俗小女子)投稿。轉載請註明原文地址。 在Android實際開發中,經常會使用adb命令,安裝應用程式可以使用adb push 或者adb install。下面就來講講這兩種安裝方式的區別。
adb push 能夠指定安裝目錄。比如執行”adb push xxx.apk system/app” 後,xxx.apk被安裝到了system/app目錄下,此目錄下的軟體為上文中提到的system application。(注意,system/app是唯讀,所以只有有root許可權才能push apk進去,而且在push進去的apk會把原本的apk覆蓋掉。)adb push本身的意思是將檔案複製到系統中的某個檔案夾下,但是將apk push到system/app下並且重啟手機以後會註冊應用程式。 adb install 用此命令安裝的軟體位於 data/app 目錄,帶有參數 -r才能強制安裝,為user application。
由以上兩條可知,adb install和adb push的apk主要區別有:

push install
目錄 system/app data/app
許可權 系統級(許可權全開) 使用者級(沒全開)
卸載 root後刪除 可卸載
大小 無限制,自訂 有限制
安裝 pm重新註冊 不會重新弄註冊

手動安裝的APK版本號碼和系統內建API版本號碼一樣。   更深一層的分析: 1、Android系統應用程式更新機制
系統為每個應用在AndroidMainfest.xml提供了versionName、versionCode兩個屬性。
versionName:String類型,用來給應用的使用者來查看版本. versionCode:Integer類型,作為系統判斷應用是否能升級的依據。

2、Android系統內建應用程式更新判斷代碼
代碼來自frameworks/base/services/java/com/android/server/PackageManagerService.java 中 scanPackageLI函數的package更新判斷條件
由以上資料分析:
同一個AP,若在data/app下有更高版本的app,但是system下有舊版本,則follow舊版本。 又已知如果有兩個以上的AP在同一個進程但是只有一個AP更改了API version則編譯會出錯 假設有兩個AP:AP1和AP2.兩個AP都在API Version更新以後build通過且install進手機。且系統中有內建AP1是舊版本的,重新開機的時候還是會註冊舊版本的AP1。則此時,系統中就會出現相同進程但是不同版本的AP1(system/app)和AP2(data/app)
綜上,編譯會出錯。 猜測:
若同一個進程的AP都用同一版本的SDK編譯,push進手機,則可以運行(已驗證)。 若同一進程的AP都用同一個版本的SDK編譯。install進手機,則可以運行,前提是刪除system/app內所有同一進程AP。(已驗證) 若同一個進程的AP都用同一個版本的SDK編譯,push/install進手機都可以(待驗證)。
  作者介紹: 史迎春,女程式員,主要研究Android系統Framework層,目前任職於HTC。
原文連結:http://www.grackertalk.com/?p=48

adb shell am 的用法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.