adb 的工作原理


adb

Android 調試橋(Android Debug Bridge) 是一種功能多樣的命令行工具,可讓您與設備進行通信。adb 命令可用於執行各種設備操作,並提供對 Unix shell 的訪問權限。

您可以使用以下命令來查看所有支持的 adb 命令的詳細列表:

adb --help > adb.txt 

adb 的工作原理

adb 是一種客戶端-服務器程序,包括以下三個組件:

  • 客戶端:用於發送命令。客戶端在開發計算機(PC)上運行。您可以從命令行終端通過發出 adb 命令調用客戶端。
  • 守護程序(adbd):用於在設備(手機)上運行命令。守護程序(daemon)在每個設備上作為后台進程運行。
  • 服務器:用於管理客戶端與守護程序之間的通信。服務器在開發機器(PC)上作為后台進程運行。

當您啟動某個 adb 客戶端時,該客戶端會先檢查是否有 adb 服務器進程正在運行。如果沒有,它會啟動服務器進程。服務器在啟動后會與本地 TCP 端口 5037 綁定,並監聽 adb 客戶端發出的命令 - 所有 adb 客戶端均通過端口 5037 與 adb 服務器通信。

然后,服務器會與所有正在運行的設備建立連接。它通過掃描 5555 到 5585 之間奇數號端口查找模擬器。服務器一旦發現 adb 守護程序 (adbd),便會與相應的端口建立連接。請注意,每個模擬器都使用一對按順序排列的端口 - 用於控制台連接的偶數號端口和用於 adb 連接的奇數號端口。

例如:

  • Emulator 1, console: 5554
  • Emulator 1, adb: 5555
  • Emulator 2, console: 5556
  • Emulator 2, adb: 5557

如上所示,在端口 5555 處與 adb 連接的模擬器與控制台監聽端口為 5554 的模擬器是同一個。

服務器與所有設備均建立連接后,您便可以使用 adb 命令訪問這些設備。由於服務器管理與設備的連接,並處理來自多個 adb 客戶端的命令,因此您可以從任意客戶端(或從某個腳本)控制任意設備。

在設備上啟用 adb 調試

注意:當您連接搭載 Android 4.2.2 或更高版本的設備時,系統會顯示一個對話框,詢問您是否接受允許通過此計算機進行調試的 RSA 密鑰。這種安全機制可以保護用戶設備,因為它可以確保只有在您能夠解鎖設備並確認對話框的情況下才能執行 USB 調試和其他 adb 命令

通過 Wi-Fi 連接到設備

Android 11 及更高版本

Android 11 及更高版本支持使用 adb 從工作站(workstation)以無線方式部署(deploying)和調試應用。例如,您可以將可調試應用部署到多台遠程設備,而無需通過 USB 實際連接設備。

如需使用無線調試,您需要使用配對碼(pairing code)將您的設備與工作站配對。您的工作站和設備必須連接到同一無線網絡

如需連接到您的設備,請按以下步驟操作:

  • 在您的工作站上,更新到最新版本的 SDK Platform-Tools
  • 在設備上啟用開發者選項、啟用無線調試(Wireless debugging)選項
  • 在詢問要允許在此網絡上進行無線調試嗎的對話框中,點擊允許
  • 選擇使用配對碼配對設備,記下設備上顯示的配對碼、IP 地址和端口號
  • 在工作站上,打開一個終端並運行adb pair ip:port
  • 當系統提示時,輸入配對碼,系統會顯示一條消息,表明您的設備已成功配對
  • 運行 adb connect ip:port

Android 10 及更低版本

一般情況下,adb 通過 USB 與設備進行通信,但您也可以在通過 USB 完成一些初始設置后,通過 WLAN 使用 adb

  • 將 Android 設備和 adb 主機連接到這兩者都可以訪問的同一 WLAN 網絡
  • 使用 USB 線將設備連接到主機
  • 設置目標設備以監聽端口 5555 上的 TCP/IP 連接:adb tcpip 5555
  • 拔掉連接目標設備的 USB 線
  • 找到 Android 設備的 IP 地址,通過 IP 地址連接到設備:adb connect device_ip_address
  • 確認主機已連接到目標設備

現在,您可以開始操作了!

如果 adb 連接斷開:

  • 確保主機仍與 Android 設備連接到同一個 WLAN 網絡
  • 通過再次執行 adb connect 步驟重新連接
  • 如果上述操作未解決問題,重置 adb 主機:adb kill-server 然后從頭開始操作

查看連接的設備

在發出 adb 命令之前,了解哪些設備實例已連接到 adb 服務器會很有幫助。您可以使用 devices 命令生成已連接設備的列表。

adb devices adb devices -l 

作為回應,adb 會針對每個設備輸出以下狀態信息:

  • 序列號:由 adb 創建的字符串,用於通過端口號唯一標識設備。 下面是一個序列號示例:emulator-5554
  • 狀態:設備的連接狀態可以是以下幾項之一:
    • offline:設備未連接到 adb 或沒有響應
    • device:設備現已連接到 adb 服務器。請注意,此狀態並不表示 Android 系統已完全啟動並可正常運行,因為在設備連接到 adb 時系統仍在啟動。不過,在啟動后,這將是設備的正常運行狀態
    • no device:未連接任何設備
  • 描述:如果您包含 -l 選項, devices 命令會告知您設備是什么。當您連接了多個設備時,此信息很有用,可幫助您將它們區分開來。

設置端口轉發 forward

您可以使用 forward 命令設置任意端口轉發,將特定主機端口上的請求轉發到設備上的其他端口。

//主機端口 6100 到設備端口 7100 的轉發 adb forward tcp:6100 tcp:7100 //主機端口 6100 到 local:logd 的轉發 adb forward tcp:6100 local:logd 

文件導入導出

您可以使用 pull 和 push 命令將文件復制到設備或從設備復制文件。與 install 命令不同,使用 pull 和 push 命令可將任意目錄和文件復制到設備中的任何位置。

//從設備中復制某個文件或目錄 adb pull remote local //將某個文件或目錄復制到設備 adb push local remote 

將 local 和 remote 替換為開發機器(本地)和設備(遠程)上的目標文件/目錄的路徑。例如:

adb push foo.txt /sdcard/foo.txt 

停止 adb 服務器

在某些情況下,您可能需要終止 adb 服務器進程,然后重啟以解決問題(例如,如果 adb 不響應命令)。

如需停止 adb 服務器,請使用 adb kill-server 命令。然后,您可以通過發出其他任何 adb 命令來重啟服務器。

發出 adb 命令

您可以從開發機器上的命令行發出 adb 命令,也可以通過腳本發出。用法如下:

adb [-d | -e | -s serial_number] command 

如果只有一個模擬器在運行或者只連接了一個設備,系統會默認將 adb 命令發送至該設備。如果有多個模擬器正在運行並且/或者連接了多個設備,您需要使用 -d、 -e 或 -s 選項指定應向其發送命令的目標設備。

注意

  • 如果您在多個設備可用時發出命令但未指定目標設備,adb 會生成錯誤。
  • 如果您要發出很多 adb 命令,可以將 $ANDROID_SERIAL 環境變量設為包含序列號。如果您同時使用 -s 和 $ANDROID_SERIAL, -s 會替換 $ANDROID_SERIAL
  • 如果有多個可用設備,但只有一個是模擬器,可以使用 -e 選項將命令發送至該模擬器。
  • 如果有多個可用設備,但只連接了一個硬件設備,可以使用 -d 選項將命令發送至該硬件設備。

adb shell

Android 提供了大多數常見的 Unix 命令行工具。如需查看可用工具的列表,請使用以下命令:

adb shell ls /system/bin > adb_shell.txt 

通過 --help 參數可獲得大多數命令的幫助。

adb shell ls --help adb shell cat --help 

toybox

許多 shell 命令都由 toybox 提供,通過 toybox --help 可獲得適用於所有 toybox 命令的常規幫助。

adb shell toybox --help
adb shell toybox ls --help
adb shell toybox cat --help

所有的 toybox 命令:

acpi base64 basename bc blkid blockdev cal cat chattr chcon chgrp chmod chown chroot chrt cksum clear cmp comm cp cpio cut date dd devmem df diff dirname dmesg dos2unix du echo egrep env expand expr fallocate false fgrep file find flock fmt free freeramdisk fsfreeze fsync getconf getenforce getfattr grep groups gunzip gzip head help hostname hwclock i2cdetect i2cdump i2cget i2cset iconv id ifconfig inotifyd insmod install ionice iorenice iotop kill killall ln load_policy log logname losetup ls lsattr lsmod lsof lspci lsusb makedevs md5sum microcom mkdir mkfifo mknod mkswap mktemp modinfo modprobe more mount mountpoint mv nbd-client nc netcat netstat nice nl nohup nproc nsenter od partprobe paste patch pgrep pidof ping ping6 pivot_root pkill pmap printenv printf prlimit ps pwd pwdx readlink realpath renice restorecon rev rfkill rm rmdir rmmod runcon sed sendevent seq setenforce setfattr setprop setsid sha1sum sha224sum sha256sum sha384sum sha512sum sleep sort split start stat stop strings stty swapoff swapon sync sysctl tac tail tar taskset tee time timeout top touch tr traceroute traceroute6 true truncate tty tunctl ulimit umount uname uniq unix2dos unlink unshare uptime usleep uudecode uuencode uuidgen vconfig vmstat watch wc which whoami xargs xxd yes zcat

發出 shell 命令

您可以使用 shell 命令通過 adb 發出設備命令,也可以啟動交互式 shell。如需發出單個命令,請使用 shell 命令,如下所示:

adb [-d |-e | -s serial_number] shell shell_command 

要在設備上啟動交互式 shell,請使用 shell 命令,如下所示:

adb [-d | -e | -s serial_number] shell

要退出交互式 shell,請按 Ctrl + D 鍵或輸入 exit

注意:在 Android 平台工具 23 及更高版本中,adb 處理參數的方式與 ssh(1) 命令相同。這項變更解決了很多 命令注入 方面的問題,還使安全執行包含 shell 元字符 的命令成為可能(如adb install Let\'sGo.apk)。不過,這項變更還意味着,對包含 shell 元字符的所有命令的解釋也發生了變化。

例如,adb shell setprop foo 'a b' 命令現在會返回錯誤,因為單引號'會被本地 shell 消去,設備看到的是adb shell setprop foo a b。如需使該命令正常運行,請引用兩次,一次用於本地 shell,另一次用於遠程 shell,與處理 ssh(1) 的方法相同。例如,adb shell setprop foo "'a b'"

am 命令

在 adb shell 中,您可以使用 activity manager(am) 工具發出命令以執行各種系統操作,如啟動 Activity、強行停止進程、廣播 intent、修改設備屏幕屬性,等等。

在 shell 中,相應的語法為:

$ adb shell PD1950:/ $ am command 

您也可以直接從 adb 發出 am 命令,無需進入遠程 shell。例如:

adb shell am start -a android.intent.action.VIEW 

啟動 Activity

start [options] intent
//啟動由 intent 指定的 Activity

具體選項包括:

  • -D:啟用調試功能
  • -W:等待啟動完成
  • --start-profiler file:啟動 profiler 並將結果發送至 file
  • -P file:類似於 --start-profiler,但當應用進入空閑狀態時自動停止
  • -R count:重復啟動 count 次,在每次重復前,the top activity will be finished
  • -S:在啟動 Activity 前,強行停止目標 app
  • --opengl-trace:啟用 OpenGL 函數的跟蹤
  • --user user_id | current:指定要作為哪個用戶運行,如果未指定,則作為當前用戶運行

instrument

instrument [options] component
//Start monitoring with an Instrumentation instance

通常情況下,目標 component 采用 test_package/runner_class 格式。

具體選項包括:

  • -r:輸出原始結果(否則,對 report_key_streamresult 進行解碼)。與 [-e perf true] 結合使用可生成性能測量的原始輸出
  • -e name value:將參數 name 設為 value。對於測試運行程序,通用格式為 -e testrunner_flag value[,value...]
  • -p file:將剖析數據寫入 file
  • -w:等待插樁完成后再返回。測試運行程序需要使用此選項
  • --no-window-animation:運行時關閉窗口動畫
  • --user user_id | current:指定要作為哪個用戶運行,如果未指定,則作為當前用戶運行

其他命令

  • startservice [options] intent:啟動由 intent 指定的 Service
  • broadcast [options] intent:發出廣播 intent
  • force-stop package:強行停止與 package 關聯的所有進程
  • kill [options] package:終止所有與 package 關聯的、可安全終止且不會影響用戶體驗的進程
  • kill-all:終止所有后台進程
  • profile start process file:啟動 process 的 profiler,將結果寫入 file
  • profile stop process:停止 process 的 profiler
  • dumpheap [options] process file:轉儲 process 的堆並寫入 file;-n 可轉儲 native 堆,而非 managed 堆
  • set-debug-app [options] package:設置要調試的應用;-w 應用啟動時等待調試程序;--persistent 保留此值
  • clear-debug-app:清除之前使用 set-debug-app 設置的待調試軟件包
  • monitor [options]:開始監控崩潰或 ANR;指定--gdb可在 crash/ANR 時,在給定的端口上啟動 gdbserv
  • screen-compat {on | off} package:控制 package 屏幕兼容性模式(screen compatibility mode)
  • display-size [reset | widthxheight]:替換設備顯示尺寸,例如am display-size 1280x800
  • display-density dpi:替換設備顯示密度,例如am display-density 480
  • to-uri intent:以 URI 的形式輸出給定的 intent specification
  • to-intent-uri intent:以 intent: URI 的形式輸出給定的 intent specification

pm 命令

在 adb shell 中,您可以使用軟件包管理器 pm 工具發出命令,以對設備上安裝的應用軟件包執行操作和查詢。在 shell 中,相應的語法為:

pm command 

您也可以直接從 adb 發出軟件包管理器命令,無需進入遠程 shell。例如:

adb shell pm uninstall com.example.MyApp 

查看軟件包

list packages [options] filter
//輸出所有軟件包,或者僅輸出軟件包名稱包含 filter 的軟件包

具體選項:

  • -f:查看它們的關聯文件(associated file)
  • -d:進行過濾以僅顯示已停用(disabled)的軟件包
  • -e:進行過濾以僅顯示已啟用(enabled)的軟件包
  • -s:進行過濾以僅顯示系統(system)軟件包
  • -3:進行過濾以僅顯示第三方(third party)軟件包
  • -i:查看軟件包的安裝程序(installer)
  • -u:也包括已卸載的軟件包
  • --user user_id:要查詢的用戶空間

查看權限

list permission-groups:輸出所有已知的權限組

$ adb shell pm list permission-groups permission group:com.google.android.gms.permission.CAR_INFORMATION permission group:android.permission-group.CONTACTS permission group:android.permission-group.PHONE permission group:android.permission-group.CALENDAR permission group:android.permission-group.CALL_LOG permission group:android.permission-group.CAMERA permission group:com.systec.umeeting.permission-group.ZOOM_TOOLS permission group:android.permission-group.UNDEFINED permission group:android.permission-group.ACTIVITY_RECOGNITION permission group:android.permission-group.SENSORS permission group:android.permission-group.LOCATION permission group:android.permission-group.STORAGE permission group:com.sina.weibo.permission-group permission group:android.permission-group.MICROPHONE permission group:android.permission-group.SMS 

list permissions [options] group:輸出所有已知的權限,或者僅輸出 group 中的權限

具體選項:

  • -g:按組進行整理
  • -f:輸出所有信息
  • -s:簡短摘要
  • -d:僅列出危險權限
  • -u:僅列出用戶將看到的權限
$ adb shell pm list permissions -g -d 
$ adb shell pm list permissions android.permission-group.PHONE All Permissions:  permission:android.permission.ACCESS_UCE_OPTIONS_SERVICE permission:android.permission.ACCESS_UCE_PRESENCE_SERVICE 

安裝應用

install [options]  path
//將軟件包安裝到系統

具體選項:

  • -r:重新安裝(Reinstall)現有應用,保留其數據
  • -t:允許安裝測試 APK
  • -i installer_package_name:指定安裝程序軟件包名稱
  • --install-location location:使用0、1、2中的某個值設置安裝位置
  • -f:在內部系統內存(internal system memory)上安裝軟件包
  • -d:允許 version code 降級
  • -g:授予應用清單中列出的所有權限
  • --fastdeploy:通過僅更新已更改的 APK 部分來快速更新安裝的軟件包
  • --incremental:僅安裝 APK 中足以用來啟動應用的部分,同時在后台流式傳輸剩余數據

安裝位置:

  • 0:自動:讓系統決定最合適的位置
  • 1:內部:在內部設備存儲上安裝
  • 2:外部:在外部介質上安裝

其他命令

  • list instrumentation [options]:列出所有測試軟件包;-f 列出 APK 文件,target_package 指定包名
  • list features:輸出系統的所有功能
  • list libraries:輸出當前設備支持的所有庫
  • list users:出系統中的所有用戶
  • path package:輸出給定 package 的 APK 的路徑
  • uninstall [options] package:從系統中移除軟件包,-k 移除軟件包后保留數據和緩存目錄
  • clear package:刪除與軟件包關聯的所有數據
  • enable/disablepackage_or_component:啟用/停用定的軟件包或組件(package/class
  • disable-user [options] package_or_component:通過--user user_id可指定要停用的用戶
  • grant/revoke package_name permission:向應用 授予/撤消 權限。在 Android 6.0(23)及更高版本的設備上,該權限可以是應用清單中聲明的任何權限。在 Android 5.1(22)及更低版本的設備上,該權限必須是應用定義的可選權限(optional permission)
  • set-install-location location:更改默認安裝位置。此命令僅用於調試目的,使用此命令可能會導致應用中斷和其他意外行為
  • get-install-location:返回當前安裝位置,返回值為上面的0、1、2
  • set-permission-enforced permission [true | false]:指定是否應強制執行指定權限
  • trim-caches desired_free_space:減少緩存文件以達到給定的可用空間
  • create-user user_name:創建具有給定 user_name 的新用戶,從而輸出該用戶的新用戶標識符
  • remove-user user_id:移除具有給定 user_id 的用戶,從而刪除與該用戶關聯的所有數據
  • get-max-users:輸出設備支持的最大用戶數

dpm 命令

為便於您開發和測試 device management (or other enterprise) apps,您可以向設備政策管理器(device policy manager)工具發出命令。使用該工具可控制 active admin app,或更改設備上的 policy's status data。在 shell 中,語法如下:

dpm command 

您也可以直接從 adb 發出 dpm 命令,無需進入遠程 shell:

adb shell dpm command 

其他命令

屏幕截圖

adb shell screencap /sdcard/screen.png adb pull /sdcard/screen.png 

錄制視頻

adb shell screenrecord [options] /sdcard/demo.mp4 adb pull /sdcard/demo.mp4 

screenrecord 命令將屏幕 Activity 錄制為 MPEG-4 文件。按 Ctrl + C 鍵可停止屏幕錄制;如果不手動停止,到三分鍾或 --time-limit 設置的時間限制時,錄制將會自動停止。

screenrecord 命令能以您要求的任何支持的分辨率和比特率進行錄制,同時保持設備顯示屏的寬高比。默認情況下,該命令以本機顯示分辨率和屏幕方向進行錄制。

局限性:

  • 音頻不與視頻文件一起錄制
  • 無法在搭載 Wear OS 的設備上錄制視頻
  • 某些設備可能無法以它們的本機顯示分辨率進行錄制。如果在錄制屏幕時出現問題,請嘗試使用較低的屏幕分辨率
  • 不支持在錄制時旋轉屏幕。如果在錄制期間屏幕發生了旋轉,則部分屏幕內容在錄制時將被切斷

選項

  • --help:顯示命令語法和選項
  • --size widthxheight:設置視頻大小,例如1280x720;默認值為設備的本機顯示屏分辨率;如果不支持,則為 1280x720。為獲得最佳效果,請使用設備的 Advanced Video Coding(AVC) 編碼器支持的大小
  • --bit-rate rate:設置視頻的 bit rate(以 MB/秒為單位),默認值為 4Mbps;您可以增加比特率以提升視頻品質,但這樣做會導致視頻文件變大;下面的示例將錄制比特率設為 6Mbps:--bit-rate 6000000
  • --time-limit time:設置最大錄制時長(以秒為單位);默認值和最大值均為 180(3 分鍾)
  • --rotate:將輸出旋轉 90 度;此功能處於實驗階段
  • --verbose:在命令行屏幕顯示日志信息;如果您不設置此選項,則該實用程序在運行時不會顯示任何信息

讀取應用的 ART 配置文件

從 Android 7.0(API 24)開始,Android Runtime (ART) 會收集已安裝應用的執行配置文件,這些配置文件用於優化應用性能。您可能需要檢查收集的配置文件,以了解在應用啟動期間,系統頻繁執行了哪些方法和使用了哪些類。

要生成文本格式的配置文件信息,請使用以下命令:

adb shell cmd package dump-profiles file_name adb pull /data/misc/profman/file_name.txt 

重置測試設備

testharness 命令對搭載 Android 10(API 29)或更高版本的測試設備執行恢復出廠設置(perform a factory reset),如下所示。

adb shell cmd testharness enable 

使用 testharness 恢復設備時,設備會自動將允許通過當前工作站調試設備的 RSA 密鑰備份在一個持久性位置。也就是說,在重置設備后,工作站可以繼續調試設備並向設備發出 adb 命令,而無需手動注冊新密鑰。

此外,為了幫助您更輕松且更安全地繼續測試您的應用,使用 testharness 恢復設備還會更改以下設備設置:

  • 設備會設置某些系統設置,以便不會出現初始設備設置向導。也就是說,設備會進入一種供您快速安裝、調試和測試您的應用的狀態。
  • 設置:
    • 停用鎖定屏幕
    • 停用緊急提醒(emergency alerts)
    • 停用帳戶自動同步
    • 停用自動系統更新
  • 其他:
    • 停用預裝的安全應用(Disables preinstalled security apps)

如果您的應用需要檢測並適應 testharness 命令的默認設置,您可以使用 ActivityManager.isRunningInUserTestHarness()

intent 參數規范

參考:Specification for intent arguments

核心參數

  • -a action:Specify the intent action, such as android.intent.action.VIEW. You can declare this only once.
  • -d data_uri:Specify the intent data URI, such as content://contacts/people/1. You can declare this only once.
  • -t mime_type:Specify the intent MIME type, such as image/png. You can declare this only once.
  • -c category:Specify an intent category, such as android.intent.category.APP_CONTACTS.
  • -n component:Specify the component name with package name prefix 包名前綴 to create an explicit 顯式 intent, such as com.example.app/.ExampleActivity.
  • -f flags:Add flags to the intent, as supported by setFlags().
  • --selector:Requires the use of -d and -t options to set the intent data and type.
  • URI component package:You can directly specify a URI, package name, and component name when not qualified by one of the above options.
    • When an argument is unqualified 當某個參數不受限制時, the tool assumes the argument is a URI if it contains a :;
    • it assumes the argument is a component name if it contains a /;
    • otherwise it assumes the argument is a package name.

傳遞數據

  • --esn extra_key:Add a null extra. This option is not supported for URI intents.
  • --es(可簡寫為-e) extra_key extra_string_value:Add string data as a key-value pair.
  • --ez extra_key extra_boolean_value:Add boolean data as a key-value pair.
  • --ei extra_key extra_int_value:Add integer data as a key-value pair.
  • --el extra_key extra_long_value:Add long data as a key-value pair.
  • --ef extra_key extra_float_value:Add float data as a key-value pair.
  • --eu extra_key extra_uri_value:Add URI data as a key-value pair.
  • --ecn extra_key extra_component_name_value:Add a component name, which is converted and passed as a ComponentName object.
  • --eia extra_key extra_int_value[,extra_int_value...]:Add an array of integers.
  • --ela extra_key extra_long_value[,extra_long_value...]:Add an array of longs.
  • --efa extra_key extra_float_value[,extra_float_value...]:Add an array of floats.

添加標記

  • --grant-read-uri-permission:Include the flag FLAG_GRANT_READ_URI_PERMISSION.
  • --grant-write-uri-permission:Include the flag FLAG_GRANT_WRITE_URI_PERMISSION.
  • --debug-log-resolution:Include the flag FLAG_DEBUG_LOG_RESOLUTION.
  • --exclude-stopped-packages:Include the flag FLAG_EXCLUDE_STOPPED_PACKAGES.
  • --include-stopped-packages:Include the flag FLAG_INCLUDE_STOPPED_PACKAGES.
  • --activity-brought-to-front:Include the flag FLAG_ACTIVITY_BROUGHT_TO_FRONT.
  • --activity-clear-top:Include the flag FLAG_ACTIVITY_CLEAR_TOP.
  • --activity-clear-when-task-reset:Include the flag FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET.
  • --activity-exclude-from-recents:Include the flag FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS.
  • --activity-launched-from-history:Include the flag FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY.
  • --activity-multiple-task:Include the flag FLAG_ACTIVITY_MULTIPLE_TASK.
  • --activity-no-animation:Include the flag FLAG_ACTIVITY_NO_ANIMATION.
  • --activity-no-history:Include the flag FLAG_ACTIVITY_NO_HISTORY.
  • --activity-no-user-action:Include the flag FLAG_ACTIVITY_NO_USER_ACTION.
  • --activity-previous-is-top:Include the flag FLAG_ACTIVITY_PREVIOUS_IS_TOP.
  • --activity-reorder-to-front:Include the flag FLAG_ACTIVITY_REORDER_TO_FRONT.
  • --activity-reset-task-if-needed:Include the flag FLAG_ACTIVITY_RESET_TASK_IF_NEEDED.
  • --activity-single-top:Include the flag FLAG_ACTIVITY_SINGLE_TOP.
  • --activity-clear-task:Include the flag FLAG_ACTIVITY_CLEAR_TASK.
  • --activity-task-on-home:Include the flag FLAG_ACTIVITY_TASK_ON_HOME.
  • --receiver-registered-only:Include the flag FLAG_RECEIVER_REGISTERED_ONLY.
  • --receiver-replace-pending:Include the flag FLAG_RECEIVER_REPLACE_PENDING.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM