日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【字节码插桩】AOP 技术 ( “字节码插桩“ 技术简介 | AspectJ 插桩工具 | ASM 插桩工具 )

發布時間:2025/6/17 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【字节码插桩】AOP 技术 ( “字节码插桩“ 技术简介 | AspectJ 插桩工具 | ASM 插桩工具 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、" 字節碼插樁 " 技術簡介
  • 二、AspectJ 插樁工具
  • 三、ASM 插樁工具





一、" 字節碼插樁 " 技術簡介



性能優化 , 插件化 , 熱修復 , 等技術都需要用到 " 字節碼插樁 " 相關技術 ;


OOP 面向對象編程 , 主要針對業務邏輯進行開發 , 333 大特點 封裝 , 繼承 , 多態 ;

AOP 面向切面編程 , 主要針對某個動作進行開發 ;

  • 如 : 給 Android 中所有的 Activity 添加安全策略 , 如果每個頁面逐個手動添加 , 可能存在遺漏 , 并且會造成代碼冗余 ; 通過 AOP 面向切面編程 , 完成上述操作 ;

" 字節碼插樁 " 技術應用 :

  • 代碼生成 : 編譯時生成代碼 , 提高開發效率 , 減少手工工作量 , 降低出錯概率 ;
  • 代碼修改 : 為某些三方庫添加崩潰 try catch 異常捕獲機制 ;
  • 代碼監控 : 編譯時插樁 , 監控應用各種性能 , 如頁面打開時間 , 頁面停留時間 ; 友盟應該用了該技術 ;
  • 代碼分析 : 使用編譯時字節碼插樁技術 , 自定義代碼檢查 ;

字節碼插樁原理 : 使用 javac 編譯出 .class 字節碼文件之后 , 使用 ASM 或 AspectJ 修改 .class 字節碼文件 , 然后使用 dx 工具將修改后的 .class 字節碼文件打包到 .dex 文件中 ;





二、AspectJ 插樁工具



AspectJ 插樁工具 :

使用簡單 : 使用 AspectJ 插樁工具修改字節碼文件 , 不需要了解 .class 字節碼文件的二進制格式 ;

成熟穩定 : 字節碼操作 如果錯了 111 個字節 , 整個字節碼就無法正常工作 , 因此修改字節碼操作 , 必須穩定 , 這也是插樁工具的必備條件 ;

固定切入點 : AspectJ 只能在固定的幾個切入點插入 , 如 : 方法調用前 , 方法內部 , 異常前后 , 變量修改 ; 不能完成很細致的操作 , 如將某些特定規則的字節碼序列作為切入點 ;

匹配規則 : AspectJ 的匹配規則類似于正則表達式 , 如 : 匹配 onXXX 方法 , 會匹配到 onCreate 方法 , 也會匹配到 onDestroy 方法 ;

性能低 : AspectJ 插入邏輯時 , 會添加一些額外冗余代碼 , 生成的字節碼肯定大于之前的字節碼文件 , 對原來的性能也有一定影響 , 修改后的字節碼文件 性能低于 修改前的字節碼文件 ;





三、ASM 插樁工具



ASM 插樁工具 :

操作靈活 : 可以在字節碼 任何位置 , 自定義修改 , 插入 , 刪除 相關邏輯 ;

上手很難 : 使用 ASM 的前提是必須 對 Java 的 .class 字節碼文件有比較深入的了解 ;

總結

以上是生活随笔為你收集整理的【字节码插桩】AOP 技术 ( “字节码插桩“ 技术简介 | AspectJ 插桩工具 | ASM 插桩工具 )的全部內容,希望文章能夠幫你解決所遇到的問題。

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