日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

【字节码插桩】Android 打包流程 | Android 中的字节码操作方式 | AOP 面向切面编程 | APT 编译时技术

發布時間:2025/6/17 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【字节码插桩】Android 打包流程 | Android 中的字节码操作方式 | AOP 面向切面编程 | APT 编译时技术 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、Android 中的 Java 源碼打包流程
    • 1、Java 源碼打包流程
    • 2、字符串常量池
  • 二、Android 中的字節碼操作方式





一、Android 中的 Java 源碼打包流程



Java 程序在 Java 虛擬機執行前 , 需要先將 Java 源碼通過 javac 編譯成 .class 字節碼文件 , 然后才能在虛擬機中運行 ;


1、Java 源碼打包流程


Android 中的 Java 源碼打包流程 : 參考 【Android 安裝包優化】APK 打包流程 ( 文件結構 | 打包流程 | 安裝流程 | 安卓虛擬機 ) 博客 ;

① 編譯資源 R.java 源碼 : 使用 AAPT 工具打包資源文件 , 生成 R.java , resources.ap 文件 ;

② 編譯 AIDL 接口源碼 : 使用 AIDL tool 工具 , 處理 AIDL 文件 , 生成對應的 Java 文件 ;

③ 編譯 Java 源碼 : 使用 javac 工具編譯 Java 源碼為 class 字節碼文件 ;

④ 打包 Class 字節碼 : 使用 dx 工具將 class 字節碼文件打包成 dex 字節碼文件 , 這是 Dalvik 虛擬機字節碼文件 ;

⑤ 生成未簽名 APK : 使用 apkbuilder 工具生成未簽名的 apk 文件 ;

⑥ 簽名 : 使用 jarsigner 工具對 apk 文件進行簽名 , 生成簽名后的文件 ;

⑦ 對齊 : 使用 zipalign 工具對簽名后的 apk 文件進行對齊操作 ;


2、字符串常量池


XML 文件在編譯時 , 會被編譯成二進制文件 , 二進制文件比 XML 文件占用的空間更小 , 所有在 XML 文件出現過的字符 , 都會放入字符資源池 , 可以去重復 ;

通過 resources.arsc 文件中的資源字符串的 字符串內容 偏移量 , 確定有哪些字符 ;





二、Android 中的字節碼操作方式



操作字節碼的 222 種方式 :

  • AOP : Aspect Oriented Programming , 面向切面編程 ;
  • APT : 編譯時技術 , 注解 , 注解處理器 , Android 依賴庫 , 333 件套 ; 參考 Android APT 專欄 ;

AOP 和 APT 都可以用于字節碼插樁操作 :

  • AOP 的插樁時機是 .class 字節碼文件打包為 .dex 文件過程中 ;
  • APT 的插樁時機是 .java 文件編譯成 .class 字節碼文件時 , 進行的 , 編譯時進行字節碼插樁 ;

ButterKnife , Dragger2 , GreenDao , ARoute 都是基于 APT 編譯時技術進行開發的 ;


《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的【字节码插桩】Android 打包流程 | Android 中的字节码操作方式 | AOP 面向切面编程 | APT 编译时技术的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。