標籤:列表 mpstat 螢幕 class 定時 遠程 import 備份 targe
Android開發環境中,ADB是我們進行Android開發經常要用的調試工具,它的使用當然是我們Android開發人員必須要掌握的。
ADB概述
Android Debug Bridge,Android調試橋接器,簡稱adb,是用於管理模擬器或真機狀態的萬能工具,採用了用戶端-伺服器模型,包括三個部分:
1、用戶端部分,運行在開發用的電腦上,可以在命令列中運行adb命令來調用該用戶端,像ADB外掛程式和DDMS這樣的Android工具也可以調用adb用戶端。
2、服務端部分,是運行在開發用電腦上的後台進程,用於管理用戶端與運行在模擬器或真機的守護進程通訊。
3、守護進程部分,運行於模擬器或手機的後台。
使用adb命令
從開發用電腦的命令列或指令檔中使用adb命令的用法是:
adb [-d|-e|-s <serialNumber>] <command>
當使用的時候,程式會調用adb用戶端。因為adb用戶端不需要關聯到任何模擬器,所以如果有多個模擬器或手機正在運行,就需要使用-d參數指定要操作的是哪一個。
adb devices
執行結果是adb為每一個裝置輸出以下狀態資訊:
adb命令列表
下表列出了所有adb支援的命令及其說明:
|
類別 |
命令 |
說明 |
備忘 |
|
可選項 |
-d |
命令僅對USB裝置有效 |
如果有多個USB裝置就會返回錯誤 |
|
-e |
命令僅對運行中的模擬器有效 |
如果有多個運行中的模擬器就會返回錯誤 |
|
-s <serialNumber> |
命令僅對adb關聯的特定序號的模擬器或手機有效(例如 "emulator-5556"). |
如果不指定裝置就會返回錯誤 |
|
一般項 |
devices |
輸出所有關聯的模擬器或手機裝置列表 |
參見 Querying for Emulator/Device Instances 以獲得更多資訊。 |
|
help |
輸出adb支援的命令 |
|
|
version |
輸出adb的版本號碼 |
|
|
調試項 |
logcat [<option>] [<filter-specs>] |
在螢幕上輸出日誌資訊 |
|
|
bugreport |
為報告bug,在螢幕上輸出dumpsys,dumpstate和 logcat資料 |
|
|
jdwp |
輸出有效JDWP進程資訊 |
可以使用 forward jdwp:<pid> 轉換連接埠以串連到指定的 JDWP 進程,例如:
adb forward tcp:8000 jdwp:472
jdb -attach localhost:8000 |
|
資料項目 |
install <path-to-apk> |
安裝應用程式(用完整路徑指定.apk檔案) |
|
|
pull <remote> <local> |
從開發機COPY指定的檔案到模擬器或手機 |
|
|
push <local> <remote> |
從模擬器或手機COPY檔案到開發機 |
|
|
連接埠和網路項 |
forward <local> <remote> |
從本地連接埠轉換串連到模擬器或手機的指定連接埠 |
連接埠可以使用以下格式表示:
l tcp:<portnum>
l local:<UNIX domain socket name>
l dev:<character device name>
l jdwp:<pid> |
|
ppp <tty> [parm]... |
通過USB運行UPP
l <tty> —PPP流中的tty。例如:/dev/omap_csmi_ttyl。
l [parm]... — 0到多個PPP/PPPD 選項, 例如defaultroute, local, notty等等。
注意不用自動啟動PPP串連 |
|
|
指令碼項 |
get-serialno |
輸出adb對象的序號 |
參見 Querying for Emulator/Device Instances以獲得更多資訊。 |
|
get-state |
輸出adb裝置的狀態 |
|
wait-for-device |
阻塞執行直到裝置已經串連,即裝置狀態是 device. |
可以在其他命令前加上此項,那樣的話adb就會等到模擬器或手機裝置已經串連才會執行命令,例如:
注意該命令並不等待系統完全啟動,因此不能追加需要在系統完全啟動才能執行的命令,例如install命令需要Android包管理器支援,但它必須在系統完全啟動後才有效。下面的命令
會在模擬器或手機與adb發生串連後就執行install,但系統還沒有完全啟動,所以會引起錯誤。 |
|
服務端項 |
start-server |
檢測adb服務進程是否啟動,如果沒啟動則啟動它。 |
|
|
kill-server |
終止服務端進程 |
|
|
Shell |
shell |
在目標模擬器或手機上啟動遠程SHELL |
參見 Issuing Shell Commands以獲得更多資訊。 |
|
shell [<shellCommand>] |
在目標模擬器或手機上執行shellCommand然後退出遠程SHELL |
SQLite 命令
本章將向您講解 SQLite 編程人員所使用的簡單卻有用的命令。這些命令被稱為 SQLite 的點命令,這些命令的不同之處在於它們不以分號(;)結束。
讓我們在命令提示字元下鍵入一個簡單的 sqlite3 命令,在 SQLite 命令提示字元下,您可以使用各種 SQLite 命令。
$sqlite3SQLite version 3.3.6Enter ".help" for instructionssqlite>
如需擷取可用的點命令的清單,可以在任何時候輸入 ".help"。例如:
sqlite>.help
上面的命令會顯示各種重要的 SQLite 點命令的列表,如下所示:
| 命令 |
描述 |
| .backup ?DB? FILE |
備份 DB 資料庫(預設是 "main")到 FILE 檔案。 |
| .bail ON|OFF |
發生錯誤後停止。預設為 OFF。 |
| .databases |
列出附加資料庫的名稱和檔案。 |
| .dump ?TABLE? |
以 SQL 文字格式設定轉儲資料庫。如果指定了 TABLE 表,則只轉儲匹配 LIKE 模式的 TABLE 表。 |
| .echo ON|OFF |
開啟或關閉 echo 命令。 |
| .exit |
退出 SQLite 提示符。 |
| .explain ON|OFF |
開啟或關閉適合於 EXPLAIN 的輸出模式。如果沒有帶參數,則為 EXPLAIN on,及開啟 EXPLAIN。 |
| .header(s) ON|OFF |
開啟或關閉頭部顯示。 |
| .help |
顯示訊息。 |
| .import FILE TABLE |
匯入來自 FILE 檔案的資料到 TABLE 表中。 |
| .indices ?TABLE? |
顯示所有索引的名稱。如果指定了 TABLE 表,則只顯示匹配 LIKE 模式的 TABLE 表的索引。 |
| .load FILE ?ENTRY? |
載入一個擴充庫。 |
| .log FILE|off |
開啟或關閉日誌。FILE 檔案可以是 stderr(標準錯誤)/stdout(標準輸出)。 |
| .mode MODE |
設定輸出模式,MODE 可以是下列之一:
|
| .nullvalue STRING |
在 NULL 值的地方輸出 STRING 字串。 |
| .output FILENAME |
發送輸出到 FILENAME 檔案。 |
| .output stdout |
發送輸出到螢幕。 |
| .print STRING... |
逐字地輸出 STRING 字串。 |
| .prompt MAIN CONTINUE |
替換標準提示符。 |
| .quit |
退出 SQLite 提示符。 |
| .read FILENAME |
執行 FILENAME 檔案中的 SQL。 |
| .schema ?TABLE? |
顯示 CREATE 語句。如果指定了 TABLE 表,則只顯示匹配 LIKE 模式的 TABLE 表。 |
| .separator STRING |
改變輸出模式和 .import 所使用的分隔字元。 |
| .show |
顯示各種設定的當前值。 |
| .stats ON|OFF |
開啟或關閉統計。 |
| .tables ?PATTERN? |
列出匹配 LIKE 模式的表的名稱。 |
| .timeout MS |
嘗試開啟鎖定的表 MS 微秒。 |
| .width NUM NUM |
為 "column" 模式設定列寬度。 |
| .timer ON|OFF |
開啟或關閉 CPU 定時器測量。 |
讓我們嘗試使用 .show 命令,來查看 SQLite 命令提示字元的預設設定。
sqlite>.show echo: off explain: off headers: off mode: columnnullvalue: "" output: stdoutseparator: "|" width:sqlite>
確保 sqlite> 提示符與點命令之間沒有空格,否則將無法正常工作。
格式化輸出
您可以使用下列的點命令來格式化輸出為本教程下面所列出的格式:
sqlite>.header onsqlite>.mode columnsqlite>.timer onsqlite>
上面設定將產生如下格式的輸出:
ID NAME AGE ADDRESS SALARY---------- ---------- ---------- ---------- ----------1 Paul 32 California 20000.02 Allen 25 Texas 15000.03 Teddy 23 Norway 20000.04 Mark 25 Rich-Mond 65000.05 David 27 Texas 85000.06 Kim 22 South-Hall 45000.07 James 24 Houston 10000.0CPU Time: user 0.000000 sys 0.000000
sqlite_master 表格
主表中儲存資料庫表的關鍵資訊,並把它命名為 sqlite_master。如要查看錶概要,可按如下操作:
sqlite>.schema sqlite_master
這將產生如下結果:
CREATE TABLE sqlite_master ( type text, name text, tbl_name text, rootpage integer, sql text);
SQLite 文法
SQLite 是遵循一套獨特的稱為文法的規則和準則。本教程列出了所有基本的 SQLite 文法,向您提供了一個 SQLite 快速入門。
SQLite 語句
所有的 SQLite 語句可以以任何關鍵字開始,如 SELECT、INSERT、UPDATE、DELETE、ALTER、DROP 等,所有的語句以分號(;)結束。
SQLite ANALYZE 語句:
ANALYZE;orANALYZE database_name;orANALYZE database_name.table_name;
SQLite AND/OR 子句:
SELECT column1, column2....columnNFROM table_nameWHERE CONDITION-1 {AND|OR} CONDITION-2;
SQLite ALTER TABLE 語句:
ALTER TABLE table_name ADD COLUMN column_def...;
SQLite ALTER TABLE 語句(Rename):
ALTER TABLE table_name RENAME TO new_table_name;
SQLite ATTACH DATABASE 語句:
ATTACH DATABASE ‘DatabaseName‘ As ‘Alias-Name‘;
SQLite BEGIN TRANSACTION 語句:
BEGIN;orBEGIN EXCLUSIVE TRANSACTION;
SQLite BETWEEN 子句:
SELECT column1, column2....columnNFROM table_nameWHERE column_name BETWEEN val-1 AND val-2;
SQLite COMMIT 語句:
COMMIT;
SQLite CREATE INDEX 語句:
CREATE INDEX index_nameON table_name ( column_name COLLATE NOCASE );
SQLite CREATE UNIQUE INDEX 語句:
CREATE UNIQUE INDEX index_nameON table_name ( column1, column2,...columnN);
SQLite CREATE TABLE 語句:
CREATE TABLE table_name( column1 datatype, column2 datatype, column3 datatype, ..... columnN datatype, PRIMARY KEY( one or more columns ));
SQLite CREATE TRIGGER 語句:
CREATE TRIGGER database_name.trigger_name BEFORE INSERT ON table_name FOR EACH ROWBEGIN stmt1; stmt2; ....END;
SQLite CREATE VIEW 語句:
CREATE VIEW database_name.view_name ASSELECT statement....;
SQLite CREATE VIRTUAL TABLE 語句:
CREATE VIRTUAL TABLE database_name.table_name USING weblog( access.log );orCREATE VIRTUAL TABLE database_name.table_name USING fts3( );
SQLite COMMIT TRANSACTION 語句:
COMMIT;
SQLite COUNT 子句:
SELECT COUNT(column_name)FROM table_nameWHERE CONDITION;
SQLite DELETE 語句:
DELETE FROM table_nameWHERE {CONDITION};
SQLite DETACH DATABASE 語句:
DETACH DATABASE ‘Alias-Name‘;
SQLite DISTINCT 子句:
SELECT DISTINCT column1, column2....columnNFROM table_name;
SQLite DROP INDEX 語句:
DROP INDEX database_name.index_name;
SQLite DROP TABLE 語句:
DROP TABLE database_name.table_name;
SQLite DROP VIEW 語句:
DROP INDEX database_name.view_name;
SQLite DROP TRIGGER 語句:
DROP INDEX database_name.trigger_name;
SQLite EXISTS 子句:
SELECT column1, column2....columnNFROM table_nameWHERE column_name EXISTS (SELECT * FROM table_name );
SQLite EXPLAIN 語句:
EXPLAIN INSERT statement...;or EXPLAIN QUERY PLAN SELECT statement...;
SQLite GLOB 子句:
SELECT column1, column2....columnNFROM table_nameWHERE column_name GLOB { PATTERN };
SQLite GROUP BY 子句:
SELECT SUM(column_name)FROM table_nameWHERE CONDITIONGROUP BY column_name;
SQLite HAVING 子句:
SELECT SUM(column_name)FROM table_nameWHERE CONDITIONGROUP BY column_nameHAVING (arithematic function condition);
SQLite INSERT INTO 語句:
INSERT INTO table_name( column1, column2....columnN)VALUES ( value1, value2....valueN);
SQLite IN 子句:
SELECT column1, column2....columnNFROM table_nameWHERE column_name IN (val-1, val-2,...val-N);
SQLite Like 子句:
SELECT column1, column2....columnNFROM table_nameWHERE column_name LIKE { PATTERN };
SQLite NOT IN 子句:
SELECT column1, column2....columnNFROM table_nameWHERE column_name NOT IN (val-1, val-2,...val-N);
SQLite ORDER BY 子句:
SELECT column1, column2....columnNFROM table_nameWHERE CONDITIONORDER BY column_name {ASC|DESC};
SQLite PRAGMA 語句:
PRAGMA pragma_name;For example:PRAGMA page_size;PRAGMA cache_size = 1024;PRAGMA table_info(table_name);
SQLite RELEASE SAVEPOINT 語句:
RELEASE savepoint_name;
SQLite REINDEX 語句:
REINDEX collation_name;REINDEX database_name.index_name;REINDEX database_name.table_name;
SQLite ROLLBACK 語句:
ROLLBACK;orROLLBACK TO SAVEPOINT savepoint_name;
SQLite SAVEPOINT 語句:
SAVEPOINT savepoint_name;
SQLite SELECT 語句:
SELECT column1, column2....columnNFROM table_name;
SQLite UPDATE 語句:
UPDATE table_nameSET column1 = value1, column2 = value2....columnN=valueN[ WHERE CONDITION ];
SQLite VACUUM 語句:
VACUUM;
SQLite WHERE 子句:
SELECT column1, column2....columnNFROM table_nameWHERE CONDITION;
Android菜鳥成長記5-ADB和sqllite