主頁 >  其他 > 安卓系統與ADB詳解

安卓系統與ADB詳解

2020-10-19 07:50:54 其他

一、android系統

1. android系統的結構

  1. Linux內核層
    Android系統基于Linux2.6內核,這一層為Android設備各種硬體提供了底層驅動,如顯示驅動,音頻驅動,照相機驅動,藍牙驅動,WIFI驅動,電源管理等

  2. 系統運行庫層
    程式庫:
    Android包含一些C/C++庫,這些庫能被Android系統中不同的組件使用,他們通過Android應用程式框架為開發者提供服務

    Android運行庫:
    Android包括了一個核心庫,該核心庫提供了Java編程語言核心庫的大多數功能,

  3. 應用框架層

    這一層主要提供構建應用程式是可能用到的各種API,Android自帶的一些核心應用就是使用這些API完成的,開發者也可以通過使用API來構建自己的應用程式
    活動管理者(Activity Manager):控制應用程式生命周期和活動堆疊的所有方面
    內容提供器(Content Providers):允許程式之間發布和分享資料,
    資源管理器(Resource Manager):提供對非代碼嵌入資源的訪問,如字串、顏色設定和用戶界面布局,
    通知管理器(Notification Manager):允許應用程式顯示對話框或者通知給用戶
    視圖系統(View System):一個可拓展的視圖集合,用于創建應用程式用戶界面

  4. 應用程式
    頂層中有所有的Android應用程式,包括通訊錄、瀏覽器等,你寫的應用程式也被安裝在這層;所有的的應用程式都是使用Java語言撰寫的,

2. Android應用的構成

  1. Android四大組件(活動,服務,內容提供者,廣播接收器)
    1. 活動(Activity)
      Activity從字面上的意思理解是活動行動的意思
      在Android中,activity指與用戶互動的界面,從你打開一個android應用所見到的第一個頁面,就是一個Activity,
      Activity作為一個可見的界面,給用戶以良好的體驗很重要,所以布局的漂亮與否決定一個應用用戶體驗
      activity的生命周期:即“產生、運行、銷毀”,但是這其中會呼叫許多方法
      onCreate(創建)
      onStart(激活)
      onResume(恢復)
      onPause(暫停)
      onStop(停止)
      onDestroy(銷毀)
      onRestart(重啟)
    2. 服務(Service)
      Android下的服務是在后臺運行,也是沒有界面,一旦啟動就會在后臺運行,直到手機關機為止,
      比如:用戶可以使用QQ音樂在后臺進行音樂播放,雖然退出了操作界面但是還在正常運行,
      Service承擔著大部分的資料處理作業,
    3. 內容提供者( ContentProvider )
      Android 平臺提供了Content Provider 使一個程式的指定資料集提供給其他應用程式,
      可以理解為是一個特殊的“資料庫”,主要是用來存取資料,
    4. 廣播接收器( BroadcastReceiver )
      主要用于接收系統或者app發送的廣播事件
      廣播:發送訊息和接收訊息

3. Android應用測驗的常用術語

  1. 系統碎片化:通俗的講亦是指整個安卓平臺的差異化越來越大,
  2. 螢屏尺寸:螢屏對角線的長度,(英寸)
  3. 解析度:解析度(螢屏解析度)是螢屏影像的精密度,是指顯示幕所能顯示的像素有多少,
    由于螢屏上的點、線和面都是由像素組成的,顯示幕可顯示的像素越多,畫面就越精細,同樣的螢屏區域內能顯示的資訊也越多,所以解析度是個非常重要的性能指標之一,
  4. 像素:像素是指由影像的小方格組成的,這些小方塊都有一個明確的位置和被分配的色彩數值,小方格顏色和位置就決定該影像所呈現出來的樣子,
    可以將像素視為整個影像中不可分割的單位或者是元素
  5. 網路制式:手機網路制式主要包括GSM、CDMA、3G、4G四種,

4. Android環境搭建介紹

  1. 真機測驗環境
  2. 第三方模擬器測驗
  3. Android自帶的模擬器測驗(需要搭建Android開發環境)

5. 真機環境的搭建

真機環境的搭建(將真機連接在pc上,通過pc上操作來控制手機設備的app)

  • Android手機用usb資料線連接到pc的usb口上
  • 打開手機的開發者模式(默認沒打開):設定->關于手機->版本號10.0.0.162,連續點五次以上,會提示已經打開開發者模式
  • 在設定的最上端,搜索“開發人員選項”,點進去
  • 勾選其中的USB除錯,彈出的提示框,要點確定確認
  • 勾選僅充電模式下允許ADB除錯
  • 在螢屏的通知欄(螢屏從上往下劃),其中usb連接的通知,點進去,都選傳輸檔案mtp
  • 在cmd->adb devices,如果能夠列出設備的序列號就說明環境搭建成功

6. 第三方模擬器

  • 夜神
  • iTools

7. Android開發環境

  1. jdk環境搭建
  2. adt環境搭建
    配置Android環境,使得其可以使用adb命令,
    配置變數“ANDROID_SDK_HOME”
    用戶名:ANDROID_SDK_HOME
    變數值:D:\alsp\java_android\adt-bundle-windows-x86_64_20140101\sdk
    修改Path,
    在path的變數值的最后加上:
    .;%ANDROID_SDK_HOME%\platform-tools;%ANDROID_SDK_HOME%\tools;
    打開cmd,輸入adb進行驗證

二、ADB

1. ADB簡介

adb的全稱為Android Debug Bridge,就是起到除錯橋的作用,借助adb工具,我們可以手機管理設備或模擬器的狀態,還可以進行很多手機操作,如安裝軟體、系統升級、運行shell命令等等,其實簡而言說,adb就是連接Android手機與PC端的橋梁,可以讓用戶在電腦上對手機進行全面的操作,

APK:APK是Android Package的縮寫,即Android安裝包,APK是類似Symbian Sis或Sisx的檔案格式,通過將APK檔案直接傳到Android模擬器或Android手機中執行即可安裝,把android sdk編譯的工程打包成一個安裝程式檔案,格式為apk,

它就是一個命令列視窗,用于通過電腦端與模擬器或者真實設備互動,包括三大內容:
電腦上運行的客戶端,
在你用于開發的機器上作為后臺行程運行的服務器,
一個以后臺行程的形式運行于模擬器或設備上的守護程式(daemon),

ADB命令的主要功能
1.運行Android設備的shell(命令列)
2.管理模擬器或Android設備的埠映射
3.安裝/卸載APK程式
4.計算機和Android設備之間上傳/下載檔案

2. ADB指令的用法

  1. 關閉和啟動adb服務 —ok

    adb kill-server    關閉ADB服務
    adb start-server     啟動ADB服務
    
  2. 查看設備連接情況

    adb devices
    

    查看當前連接的設備, 連接到計算機的android設備或者模擬器將會串列顯示
    輸出資訊格式為:

    [serialNumber] [state]
    

    例如:
    在這里插入圖片描述

  3. 安裝和卸載APK

    adb install <apk檔案路徑> ---將指定的apk檔案安裝到設備上 
    adb uninstall <軟體名> ---卸載設備上的指定程式 這個軟體名是手機上的程式包,如com.tencent.mm
    adb uninstall -k <軟體名> --卸載程式但是保留其配置和快取檔案
    com.tencent.mobileqq --qq的包名
    
  4. 指定設備進行操作
    當有多個設備連接時,可以用下面的命令來直接選擇執行命令的設備

    adb [-d|-e|-s <serial Number>] <command>
    d:真機(多個設備中只有一個真機時適用)
    e:模擬器(多個設備中只有一個模擬器時適用)
    s:序列號
    

    例如:
    adb -d install helloWorld.apk
    adb -s emulator-5556 install helloWorld.apk

  5. 列出當前設備上的程式包

    adb shell pm list packages
    

    洗掉微信APP

    adb uninstall com.tencent.mm
    
  6. 上傳和下載檔案

    1. adb push <本地路徑> <遠程路徑>
      例如,把pc上的檔案或檔案夾上傳到設備
      adb push foo.txt    /sdcard/foo.txt
      
    2. adb pull <遠程路徑> <本地路徑>
      例如,把設備上的檔案或檔案夾下載到pc
      adb pull system/app  D:\apps`
      
      演示步驟:
      1.打開cmd,輸入adb shell,然后進入cd data/app
      2.可以看到后綴為.apk的檔案
      3.新打開一個cmd,輸入adb pull /data/app/com.tencent.mobileqq-1.apk E:
      4.在e盤上可以看到后綴為.apk的檔案
  7. 日志Logcat的操作

    adb logcat      在命令列中顯示除錯資訊
    adb logcat  > 檔案名   將logcat資訊保存在檔案中
    

    控制日志格式
    日志訊息在標記和優先級之外還有很多元資料欄位,這些欄位可以通過修改輸出格式來控制輸出結果, -v選項加上下面列出的內容可以控制輸出欄位

    brief — 顯示優先級/標記和原始行程的PID (默認格式)
    process — 僅顯示行程PID
    tag — 僅顯示優先級/標記
    thread — 僅顯示行程:執行緒和優先級/標記
    raw — 顯示原始的日志資訊,沒有其他的元資料欄位
    time — 顯示日期,呼叫時間,優先級/標記,PID
    long —顯示所有的元資料欄位并且用空行分隔訊息內容
    

    比如:

    adb logcat -v thread
    

    日志等級
    每一條日志記錄都有一個等級的

    V:所有的資訊都列印 
    D:debug除錯資訊 
    I: Information,資訊 
    W:warning,警告,編譯器認為你可能有問題;實際上可能沒問題 
    E:error,錯誤 
    F: fatal,致命的 
    S:靜默的,啥也不列印到日志
    
    通過分析,v、s沒啥用,D、I、W對我們測驗人員來說用處也不大,需要過濾掉 adb logcat -v time *:W > e:\log1.txt
    
  8. 其他命令

    android                   啟動SDK管理器
    adb bugreport     		  查看bug報告
    adb get-serialno 		  獲取設備的序列號
    adb root                  獲得Root權限
    adb  remount    		  將system磁區從只讀變成可讀可寫(需要ROOT權限)
    android list targets      顯示系統內所有的android平臺
    android list avd          顯示系統中所有模擬器
    ddms         			  啟動ddms
    adb reboot   		      重啟
    dmesg     				  列印出內核的除錯資訊
    adb shell 				  掛載到Linux的空間 root:
    
    將adb指令掛載到Android的底層Linux下
    
    adb shell top: 獲取linux下運行系統行程
    
    我們會關注其中最后一列:包名 adb shell top -n 1 -d 1 -n 1:表示獲取后臺行程的次數 -d 1:獲取多次的時候,每次之間的時間間隔1秒
    
    adb push <local> <remote>:將本地的檔案推送到遠程設備上(模擬器或者是真機設備)
    adb pull <remote> <local>:將遠程設備上檔案拉取到本地(pc)
    adb shell dumpsys window | findstr mCurrentFocus :獲取當前焦點的包名及activity名
    

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/179682.html

標籤:其他

上一篇:CPU為AMD的電腦如何配置 Android Studio以及Genymotion模擬器

下一篇:gradle常見問題

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more