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