Android菜鳥成長記5-ADB和sqllite

來源:互聯網
上載者:User

標籤:列表   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 可以是下列之一:
  • csv 逗號分隔的值

  • column 靠左對齊的列

  • html HTML 的 <table> 代碼

  • insert TABLE 表的 SQL 插入(insert)語句

  • line 每行一個值

  • list 由 .separator 字串分隔的值

  • tabs 由 Tab 分隔的值

  • tcl TCL 列表元素

.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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.