Android中執行adb shell命令的方式如下: /** * 執行一個shell命令,並返回字元串值 * * @param cmd * 命令名稱&參數組成的數組(例如:{"/system/bin/cat", "/proc/version"}) * @param workdirectory * 命令執行路徑(例如:"system/bin/") * @return 執行結果組成的字元串 * @throws IOException */ public static synchronized String run(String[] cmd, String workdirectory) throws IOException { StringBuffer result = new StringBuffer(); try { // 創建操作系統進程(也可以由Runtime.exec()啟動) // Runtime runtime = Runtime.getRuntime(); // Process proc = runtime.exec(cmd); // InputStream inputstream = proc.getInputStream(); ProcessBuilder builder = new ProcessBuilder(cmd); InputStream in = null; // 設置一個路徑(絕對路徑了就不一定需要) if (workdirectory != null) { // 設置工作目錄(同上) builder.directory(new File(workdirectory)); // 合並標准錯誤和標准輸出 builder.redirectErrorStream(true); // 啟動一個新進程 Process process = builder.start(); // 讀取進程標准輸出流 in = process.getInputStream(); byte[] re = new byte[1024]; while (in.read(re) != -1) { result = result.append(new String(re)); } } // 關閉輸入流 if (in != null) { in.close(); } } catch (Exception ex) { ex.printStackTrace(); } return result.toString(); }
⑵ 如何配置android的adb環境變數
您好,很高興為您解答。
看下文庫吧:
http://wenku..com/link?url=-fs7GilXqziJ2QI-_
如若滿意,請點擊右側【採納答案】,如若還有問題,請點擊【追問】
希望我的回答對您有所幫助,望採納!
~ O(∩_∩)O~
⑶ 如何用adb連接android手機
(1)首先先用usb線連接android手機,然後輸入指令:adb tcpip,埠號默認為5555。
(3)android60adb擴展閱讀
adb是androidsdk里的一個工具, 用這個工具可以直接操作管理android模擬器或者真實的andriod設備(如G1手機). 它的主要功能有:
1、運行設備的shell(命令行)。
2、管理模擬器或設備的埠映射。
3、計算機和設備之間上傳/下載文件。
3、將本地apk軟體安裝至模擬器或android設備
ADB是一個客戶端-伺服器端 程序, 其中客戶端是你用來操作的電腦, 伺服器端是android設備。而ADB驅動就是電腦與android設備的通信的客戶端驅動程序。
⑷ 如何用adb連接android手機
方法一:::手機打開開發者模式 勾選usb調試 在你開發工具的ddms下 就有連上你手機了 或者下載豌豆莢這種,會自動鏈接電腦 再打開ddms就有adb
fang2
adb是什麼呢? 我就不多說了, 對於搞Android開發的人來說, 一定不陌生。 本文講述如何用adb來連接手機。
利用adb來連接手機, 有兩種方式: 1, wifi, 2, usb.
前提條件: 下載adb, 最好把對應的文件置於cmd.exe同目錄下。
1. 通過wifi, 利用adb來連接手機。
在pc的cmd中輸入命令:
adb connect 192.168.1.100
其中adb就是手機的ip. 如果連接成功, 就可以進入android的shell了。
我自己在操作過程中, pc能ping通過手機, 但是adb連接手機, 出現了一點點問題, 提示unable to connect to 192.168.1.100:5555, 這個是什麼原因呢? 原來手機的默認adb服務是沒有打開的, 否則, 別人adb能隨便連, 那豈不是很不安全么? 所以, 我們要想辦法把手機上的adb服務打開。 怎麼搞呢? 首先要在手機上下載一個android模擬器(當然, 如果你有, 就不用下載了), 然後切到root許可權, 並執行如下命令打開adb服務:
su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
然後adb就可以連接手機了, 如圖:
2. 通過usb, 利用adb來連接手機。
我把手機通過usb接上pc, 結果adb並沒有連接上手機, 於是下載了android驅動程序, 安裝了, 就好了。這樣, adb就連接上了手機, 開心啊。於是就可以利用adb shell進入手機的android系統了。 附上圖, 紀念一下:
比較一下: 方法1的要求較高, 需要依賴於穩定的網路, 而且操作麻煩, 方法2就簡便多了。
一旦adb登錄後, 就可以切換到root下, 不要密碼啊, 我進入shell後, 執行reboot, 結果手機機關機了。 好吧, 我承認, 我是有激動了。
⑸ Android 開發常用的adb命令
在Mac 下配置Android SDK的adb命令添加到環境變數:
1. 檢查 .bash_profile
使用 vim .bash_profile 打開該文件,如果該文件存在則直接進入如下第二個步驟,如果該文件不存在,可通過下面命令創建.bash_profile:
touch .bash_profile
2. 編輯 .bash_profile
打開.bash_profile文件,進行編輯,命令如下:
vim .bash_profile
添加如下內容, 以下是我的sdk的路徑,具體路徑根據自己sdk路徑稍作改動即可;
3. 保存 .bash_profile
按 esc 鍵後退,然後輸入 :wq 後保存退出;
4. 更新配置
source .bash_profile
(1) 查看當前顯示的activity的名字**
(2) 查看前台Activity
(3). 查看前台Activity的棧信息
結果如下:
在沒有root的手機里想adb pull出裡面的東西可以先用這個命令搜出位置,然後在pull出來
將apk後綴改成zip, 然後解壓,
Ctrl + C 停止錄屏
配置fastboot命令環境變數
fastboot刷機步驟:
持續更新...
⑹ 【Android】如何使用ADB進行調試
1、adb devices
( 用於查看當前adb連接的設備有哪些,這里目前是無)
(6)android60adb擴展閱讀:
無線使用ADB(Android Debug Bridge)非常的實用,它能夠讓你的手機用無線來取代USB連接,與電腦鏈接起來更加的方便快捷,還可以保護電池。需要root。
還可以進行以下的操作:
1、快速更新設備或手機模擬器中的代碼,如應用或Android系統升級;
2、在設備上運行shell命令;
3、管理設備或手機模擬器上的預定埠;
4、在設備或手機模擬器上復制或粘貼文件;
老玩家對adb這個調試工具肯定不陌生了,不過一般都是用USB連接來玩兒,這次帶來的是用無線進行連接,就太強大了,畢竟usb連接對電池的壽命有一定影響。
⑺ Android性能測試(內存、cpu、fps、流量、GPU、電量)——adb篇
3)查看進程列表:adb shell "ps",同時也能獲取到應用的UID,方式如下(不需root許可權):
u0_a開頭的都是Android的應用進程,Android的應用的UID是從10000開始,到19999結束,可以在Process.java中查看到(FIRST_APPLICATION_UID和LAST_APPLICATION_UID),u0_a後面的數字就是該應用的UID值減去FIRST_APPLICATION_UID所得的值,所以,對於截圖這個應用進程,它是u0_a155,按前面的規制,它的UID就是155 + FIRST_APPLICATION_UID = 10155。
VSS - Virtual Set Size 虛擬耗用內存(包含共享庫佔用的內存)
RSS - Resident Set Size 實際使用物理內存(包含共享庫佔用的內存)
PSS - Proportional Set Size 實際使用的物理內存(比例分配共享庫佔用的內存)
USS - Unique Set Size 進程獨自佔用的物理內存(不包含共享庫佔用的內存)
一般來說內存佔用大小有如下規律:VSS >= RSS >= PSS >= USS
使用 adb shell "mpsys meminfo -s <pakagename | pid>"命令,輸出結果分以下4部分:
PS:在apk內調用運行獲取其他app的內存數據則需要root許可權
adb命令:adb shell mpsys gfxinfo <package | pid>
正常情況下幀率應該在16.67ms左右,1秒60幀,執行結果如下:
詳細計算方法如下:
還有一個命令是: adb shell mpsys SurfaceFlinger --latency LayerName
其中LayerName在各個不同系統中獲取的命令是不一樣的
在Android 6系統直接就是SurfaceView
在Android 7系統中可以通過 mpsys window windows | grep mSurface | grep SurfaceView 然後通過數據截取到
在Android 8系統中可以通過 mpsys SurfaceFlinger | grep android包名獲取到
執行命令結果如下:
計算方法比較簡單,一般列印出來的數據是129行(部分機型列印兩次257行,但是第一部分是無效數據,取後半部分),取len-2的第一列數據為end_time,取len-128的第一列數據為start_time
fps = 127/((end_time - start_time) / 1000000.0)
至於為啥要取第一列數據,這里不做過多介紹,歡迎參看這兩篇文章
老羅的文章SurfaceView原理
Android性能測試之fps獲取
至於為啥要處於1000000,因為命令列印出來的是納秒單位,要轉為毫秒進行計算,127就是因為命令一次列印出來127幀的數據而已
有兩種方法可以獲取
1) adb shell "top -n 5 | grep <package | pid>" ,第三列就是實時監控的CPU佔用率(-n 指定執行次數,不需root許可權),這邊top命令執行需要2到3s左右,一般可以採用busybox 的top命令執行,效率會快很多
2) adb shell "mpsys cpuinfo | grep <package | pid>"
兩種方法直接區別在於,top是持續監控狀態,而mpsys cpuinfo獲取的實時CPU佔用率數據
adb命令:adb shell "mpsys batterystats < package | pid>" (Android 5.0後引入)
獲取單個應用的耗電量信息,具體返回結果待研究
adb命令:adb shell "mpsys battery"
出現信息解讀:
AC powered:false 是否連接AC(電源)充電線
USB powered:true 是否連接USB(PC或筆記本USB插口)充電
Wireless powered:false 是否使用了無線電源
status: 1 電池狀態,2為充電狀態,其他為非充電狀態
level:58 電量(%)
scale: 100. 電量最大數值
voltage: 3977 當前電壓(mV)
current now: -335232. 當前電流(mA)
temperature:355 電池溫度,單位為0.1攝氏度
adb 命令:adb shell "mpsys< package | pid> | grep UID" [通過ps命令,獲取app的UID(安裝後唯一且固定)]
adb shell cat /proc/uid_stat/UID/tcp_rcv [cat為查看命令,讀取tcp_rcv獲取應用接收流量信息(設備重啟後清零)]
adb shell cat /proc/uid_stat/UID/tcp_snd [cat為查看命令,讀取tcp_snd獲取應用發送流量信息(設備重啟後清零)]
計算流量消耗步驟:
或者還有一種方式獲取應用流量消耗:
首先判斷類型:
cat /sys/class/thermal/thermal_zone*/type
只有紅框框出來的是有效的
cat /sys/class/thermal/thermal_zone*/temp
獲取CPU溫度
mpsys battery | grep temperature 單位0.1攝氏度
獲取/proc/stat文件內容(無許可權限制)
總的cpu時間片是 total = user+nice+system+idle+iowait+irq+softirq
忙碌時間為 notidle = user+nice+system +iowait+irq+softirq
cpu使用率計算方法為,先取開始的total值和忙碌時間notidle,隔一段時間片,再取一次計算total2,notidle2, cpuuse = (notidle2 – notidle) * 100 / (total2 - total)%
PS:由於Android 8許可權收緊,在Android 8系統手機內apk內讀取文件內容為空,需要shell許可權才可獲取文件內容,下同
讀/sys/devices/system/cpu/cpuX/cpufreq/scaling_cur_freq文件的值,X不定,看是幾核手機,scaling_cur_freq是否存在也不一定,需要判斷
至於為啥不取cpuinfo_cur_freq文件的值,原因是android 6,7系統獲取的時候,這個文件shell沒有讀取許可權,需要root許可權
參考文章: https://blog.csdn.net/long_meng/article/details/45934899
Android 6,7系統可執行
mpsys window windows | grep "mCurrentFocus"
執行結果一般為類似:
mCurrentFocus=Window{81caaa5 u0 com.tencent.mobileqq/com.tencent.mobileqq.activity.SplashActivity}
按照一定規則把com.tencent.mobileqq提取出來即可
直接apk內讀取文件即可,不需要shell許可權(支持到Android8)
Gpu使用率獲取:會得到兩個值,(前一個/後一個)*100%=使用率
adb shell cat /sys/class/kgsl/kgsl-3d0/gpubusy
Gpu工作頻率:
adb shell cat /sys/class/kgsl/kgsl-3d0/gpuclk
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/cur_freq
Gpu最大、最小工作頻率:
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/max_freq
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/min_freq
Gpu可用頻率
adb shell cat /sys/class/kgsl/kgsl-3d0/gpu_available_frequencies
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/available_frequencies
Gpu可用工作模式:
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/available_governors
Gpu當前工作模式:
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/governor
⑻ 在android代碼里怎麼執行adb命令
android程序執行adb shell命令(實例源碼) package net.URL; import net.gimite.nativeexe.R; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.view.View.OnClickListener; import android.widget.*; public class MainActivity extends Activity { private TextView outputView; private Button localRunButton; private EditText localPathEdit; private Handler handler = new Handler(); private EditText urlEdit; private Button remoteRunButton; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); outputView = (TextView)findViewById(R.id.outputView); localPathEdit = (EditText)findViewById(R.id.localPathEdit); localRunButton = (Button)findViewById(R.id.localRunButton); localRunButton.setOnClickListener(onLocalRunButtonClick); } private OnClickListener onLocalRunButtonClick = new OnClickListener() { public void onClick(View v) { String output = exec(localPathEdit.getText().toString()); output(output); // try { // // // Process process = Runtime.getRuntime().exec(localPathEdit.getText().toString()); // // } catch (IOException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } } }; // Executes UNIX command. private String exec(String command) { try { Process process = Runtime.getRuntime().exec(command); BufferedReader reader = new BufferedReader( new InputStreamReader(process.getInputStream())); int read; char[] buffer = new char[4096]; StringBuffer output = new StringBuffer(); while ((read = reader.read(buffer)) > 0) { output.append(buffer, 0, read); } reader.close(); process.waitFor(); return output.toString(); } catch (IOException e) { throw new RuntimeException(e); } catch (InterruptedException e) { throw new RuntimeException(e); } } private void download(String urlStr, String localPath) { try { URL url = new URL(urlStr); HttpURLConnection urlconn = (HttpURLConnection)url.openConnection(); urlconn.setRequestMethod("GET"); urlconn.setInstanceFollowRedirects(true); urlconn.connect(); InputStream in = urlconn.getInputStream(); FileOutputStream out = new FileOutputStream(localPath); int read; byte[] buffer = new byte[4096]; while ((read = in.read(buffer)) > 0) { out.write(buffer, 0, read); } out.close(); in.close(); urlconn.disconnect(); } catch (MalformedURLException e) { throw new RuntimeException(e); } catch (IOException e) { throw new RuntimeException(e); } } private void output(final String str) { Runnable proc = new Runnable() { public void run() { outputView.setText(str); } }; handler.post(proc); } }
⑼ ADB是什麼 ADB常用命令介紹
當我們在給Android手機刷機時,需要ADB工具,不過即使是一些經常刷機的達人,也未必知道ADB是什麼意思。如果你想知道ADB是什麼,想了解ADB常用命令,下面就給你介紹一下。 ADB的全稱為Android Debug Bridge,字面意思就是安卓調試橋接,簡單點說,它是Android系統提供的一套工具,通過它,我們可以在電腦上建立一個連接到手機的通道,然後可以在電腦上向手機發送一些指令,完成一些我們需要做的工作。 ADB就是起到調試橋的作用。通過ADB我們可以在Eclipse中方面通過DDMS來調試Android程序,說白了就是debug工具。ADB的工作方式比較特殊,採用監聽Socket TCP 5554等埠的方式讓IDE和Qemu通訊,默認情況下ADB會daemon相關的網路埠,所以當我們運行Eclipse時ADB進程就會自動運行。 ADB是android sdk里的一個工具,用這個工具可以直接操作管理android模擬器或者真實的andriod設備(如G1手機)。 它的主要功能有: * 運行設備的shell(命令行) * 管理模擬器或設備的埠映射 * 計算機和設備之間上傳/下載文件 * 將本地apk軟體安裝至模擬器或android設備 ADB是一個客戶端-伺服器端程序,其中客戶端是你用來操作的電腦,伺服器端是android設備。 ADB常用的幾個命令 1. 查看設備 ADBdevices 這個命令是查看當前連接的設備, 連接到計算機的android設備或者模擬器將會列出顯示 2. 安裝軟體 ADBinstall 這個命令將指定的apk文件安裝到設備上 3. 卸載軟體 * ADBuninstall <軟體名> * ADBuninstall -k <軟體名> 如果加 -k 參數,為卸載軟體但是保留配置和緩存文件. 4. 登錄設備shell * ADBshell * ADBshell 這個命令將登錄設備的shell. 5. 從電腦上發送文件到設備 * ADBpush <本地路徑> <遠程路徑> 用push命令可以把本機電腦上的文件或者文件夾復制到設備(手機) 6. 從設備上下載文件到電腦 * ADBpull <遠程路徑> <本地路徑> 用pull命令可以把設備(手機)上的文件或者文件夾復制到本機電腦 7. 顯示幫助信息 * ADBhelp 這個命令將顯示幫助信息 Android端的ADB命令 更多 0
⑽ ADB是什麼意思
adb的全名是Android調試橋,它充當調試橋。Adb是Android SDK中的工具,使用此工具,您可以直接操作和管理Android模擬器或真實的Android設備(例如G1手機)。
Android系統的adb的全名是Android Debug Bridge,在Android開發環境中,abd是我們經常用於開發的調試工具,使用adb工具的前提是打開手機上的USB調試,然後通過數據線連接到計算機。
android adb主要功能有:
1、運行設備的shell(命令行)。
2、管理模擬器或設備的埠映射。
3、計算機和設備之間上傳/下載文件。
4、將本地apk軟體安裝到模擬器或android設備。