插件化,熱修復基礎之class文件,dex文件

class文件基本概念:class文件,能被jvm識別,加載並執行的文件格式。一種8位字節的二進制流文件
生成方式:
1,ide自動build
2,javac命令生成class文件
執行方式:java命令執行class文件

class文件結構
image.png
加密,最小版本,最大版本,常量池,常量結構體,作用域,this標誌,super標誌,接口數量,接口,成員變量,成員變量結構體,方法數量,方法,屬性數量,屬性相關(註解等。)

access——flag的取值範圍
image.png

image.png

dex文件:dex文件,能被dvm識別,加載並執行的文件格式。一種8位字節的二進制流文件
通過c和c++編寫
生成方式:
1,ide自動build
2,手動通過dx命令去生成dex文件
首先配置dex命令的變量
mac(環境)
1,打開命令行vim .base_profile
2,插入export PATH=$PATH:/Users/yanzhe/Library/Android/sdk/build-tools/28.0.3
PATH後面的路徑是dex命令工具的路徑
保存後 source .base_profile
dx --dex --output 轉換後的文件名 要轉換的class文件
通過dx --dex --output Hello.dex Hello.class生成dex文件

執行dex文件,將dex文件push到手機中
adb push Hello.dex /storage/emulated/0/
進入手機adb shell
執行 dalvikvm -cp dex路徑 class類名
在這裏爲dalvikvm -cp /sdcard/Hello.dex Hello
執行成功

image.png

image.png

dex和class區別,class只是記錄了一個類中所有的信息,而dex是記錄了整個工程這種所有的類的文件的信息
可以用010edit來查看class文件和dex文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章