您好,登錄后才能下訂單哦!
本篇內容介紹了“Android的基礎知識有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
Base64
所有的數據都能被編碼為只用65個字符就能表示的文本。
標準的Base64每行為76個字符,每行末尾添加一個回車換行符(\r\n)。不論每行是否滿76個字符,都要添加一個回車換行符。
65字符:A~Z a~z 0~9 + / =
URL Base64算法中,為了安全,會把 + 替換成 - ,把 / 替換成 _
= 有時候用 ~ 或 . 代替
Base64的應用
密鑰,密文,圖片,數據簡單加密或者預處理
Base64編碼解碼與btoa、atob
Hex
二進制數據最常用的一種表示方式。
用0-9 a-f 16個字符表示。每個十六進制字符代表4bit。也就是2個十六進制字符代表一個字節。
在實際應用中,尤其在密鑰初始化的時候,一定要分清楚自己傳進去的密鑰是哪種方式編碼的,采用對應方式解析,才能得到正確的結果
不管明文多長,散列后的密文定長
明文不一樣,散列后結果一定不一樣
散列后的密文不可逆
一般用于校驗數據完整性、簽名 sign
由于密文不可逆,所以后臺無法還原,也就是說他要驗證,會在后臺以跟前臺一樣的方式去重新簽名一遍。也就是說他會把源數據和簽名后的值一起提交到后臺。所以我們要保證在簽名時候的數據和提交上去的源數據一致,這種算法特喜歡在內部加入時間戳
常見算法
MD5
SHA1
SHA256
SHA512
HmacMD5
HmacSHA1
HmacSHA256
加密和解密的過程是可逆的
對稱加密算法
根據密鑰長度不同又分為AES-128 AES-192 AES-256
其中AES-192 AES-256在Java中使用需獲取無政策限制權限文件
加密/解密使用相同的密鑰
DES 數據加密標準
3DES TripleDES DESede
AES 高級加密標準
CryptoJS提供ECB,CBC,CFB,OFB,CTR五種模式填充提供NoPadding ZeroPadding Pkcs7(Pkcs5) Iso10126 Iso97971 AnsiX923
非對稱加密算法
使用公鑰加密,使用私鑰解密
公鑰是公開的,私鑰保密
加密處理安全,但是性能極差,單次加密長度有限制
RSA既可用于數據交換,也可用于數據校驗
數據校驗通常結合消息摘要算法 MD5withRSA 等
兩種加密算法常見結合套路
隨機生成密鑰
密鑰用于AES/DES/3DES加密數據
RSA對密鑰加密
提交加密后的密鑰和加密后的數據給服務器
pkcs1padding 明文最大字節數為密鑰字節數-11密文與密鑰等長
NoPadding 明文最大字節數為密鑰字節數 密文與密鑰等長
RSA
lib:各種平臺下使用的對應的so文件
META-INF文件夾:存放工程一些屬性文件
CERT.RSA:公鑰和加密算法描述
CERT.SF:加密文件,他是使用私鑰對摘要明文加密后得到的密文信息,只有使用私鑰配對的公鑰才能解密該文件
MANIFEST.MF:程序清單文件,他包含包中所有文件的摘要明文
resource.arsc:資源加密(語言包)對res目錄下的資源的一個索引文件,保存了原工程中strings.xml等文件內容
drawable:圖片
layout:布局
menu:菜單
AndriodMainfest.xml:清單文件(圖標、界面、權限、入口),安卓工程的基礎配置屬性文件。
classes.dex:java代碼編譯得到的Dalvik VM能直接執行的文件
assets:資源文件(圖片、音頻、數據庫、網頁、配置文件等)
res:資源文件,需要編譯
res目錄下的資源文件在編譯時會自動生成索引文件(R.java),在java代碼中用R.xxx.yyy來引用
asset目錄下的資源文件不需要生成索引,在java代碼中需要用AssetManager中訪問。
一般來說,除了音頻和視頻資源(需要放在raw或asset下),用java開發的安卓工程使用到的資源文件都會放到res下;使用c++游戲引擎的資源文件均需要放在asset下。
JVM:Java虛擬機,運行的是.java文件編譯后的.class文件
DVM:Android4.4及以前使用的都是Dalvik虛擬機,我們知道Apk在打包的過程中會先將java等源碼通過javac編譯成.class文件,但是我們的Dalvik虛擬機只會執行.dex文件,這個時候dx會將.class文件轉換成Dalvik虛擬機執行的.dex文件。Dalvik虛擬機在啟動的時候會先將.dex文件轉換成快速運行的機器碼,又因為65535這個問題,導致我們在應用冷啟動的時候有一個合包的過程,最后導致的一個結果就是我們的app啟動慢,這就是Dalvik虛擬機的JIT特性。
Dalvik是google專門為安卓操作系統設計的一個虛擬機,經過深度的優化,雖然安卓上的程序是使用java來開發的,但是Dalvik和標準的java虛擬機JVM還是兩回事,Dalvik VM是基于寄存器的,而JVM是基于棧的;Dalvik有專屬的文件執行格式dex,JVM則執行的是java字節碼。
通過Dalvik的字節碼我們不能直接看到原來的邏輯代碼,這是需要借助如Apktool或dex2jar+jd-gui工具來幫助查看,但是注意的是最終我們修改APK需要操作的是.smali文件,而不是導出來的java文件重新編譯。
ART:ART虛擬機是在Android5.0才開始使用的Android虛擬機,ART虛擬機必須要兼容Dalvik虛擬機的特性,但是ART有一個很好的特性AOT(ahead of time),這個特性就是我們在安裝APK的時候就將dex直接處理成可直接供ART虛擬機使用的機器碼,ART虛擬機將.dex文件轉換成可直接運行的.oat文件,ART虛擬機天生支持多dex,所以也不會有一個合包的過程,所以ART虛擬機會很大的提升APP冷啟動速度。
Xposed hook的是Java代碼,所以Xposed不支持5.0以及以上系統。
Android通常有以下分區(用df 來查看分區情況)
System分區: 就是我們刷ROM的分區
Data分區: 分區就是我們裝APK的分區
Catch分區: 是緩存分區
SDCard分區: 就是掛載的SD卡。
data分區常見目錄:app、system、data、local、misc
data/data目錄
存放的是所有APK程序數據的目錄,每個APK對就一個自己的Data目錄,就是在data/data/目錄下,會產生一個跟 Package一樣的目錄。比如有一個APK,它的包名叫com.test.hello,則在data/data/目錄下會有一個 com.test.hello的目錄,這個APK只能操作此目錄,不能操作其它APK的目錄
data/app目錄
用戶安裝的APK放在這里。我們如果把APK放入這個文件夾下面的話,就算安裝好了。這就叫靜默安裝。不用管APK文件里面的lib目錄下的庫文件,系統會自動幫我們放入調用庫
data/misc目錄
保存WIFI帳號,VPN設置信息等。比如保存了一個WIFI連接帳號,則此目錄下的WIFI目錄下面wpa_supplicant.conf可以查看到
system分區常用目錄:app、lib、xbin、bin、media、framework
system/app目錄
存放系統自帶的APK。將APK放入到System/app目錄下,也是靜默安裝
system/lib目錄
存放APK程序用到的庫文件
system/bin目錄和system/xbin目錄
存放的是shell命令
system/framework目錄
啟用Android系統所用到框架,如一些jar文件
sd卡目錄:/sdcard /mnt/sdcard
“Android的基礎知識有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。