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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【AOP 面向切面编程】Android Studio 使用 AspectJ 监控方法运行原理分析

發布時間:2025/6/17 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【AOP 面向切面编程】Android Studio 使用 AspectJ 监控方法运行原理分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、查看使用 AspectJ 后生成的 Class 字節碼類
  • 二、AspectJ 的本質





一、查看使用 AspectJ 后生成的 Class 字節碼類



在 Android Studio 中查找編譯的 MainActivity 字節碼文件 , 最終在 Y:\002_WorkSpace\001_AS\AOP_Demo\app\build\intermediates\javac\debug\classes\com\example\aop_demo 目錄下找到 MainActivity.class 文件 ;

字節碼文件內容 :

// // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) //package com.example.aop_demo;import android.os.Bundle; import android.view.View; import androidx.appcompat.app.AppCompatActivity; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.runtime.reflect.Factory;public class MainActivity extends AppCompatActivity {public MainActivity() {}protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);this.setContentView(2131427356);}@Monitor("textClick")public void textClick(View view) {JoinPoint var3 = Factory.makeJP(ajc$tjp_0, this, this, view);textClick_aroundBody1$advice(this, view, var3, MonitorAspect.aspectOf(), (ProceedingJoinPoint)var3);}static {ajc$preClinit();} }



二、AspectJ 的本質



Java 源碼 通過 javac 編譯器 編譯后得到 Class 字節碼文件 ;

AspectJ 也是一個編譯器 , AspectJ 編譯 Java 代碼時 , 加入了 AOP 相關代碼 ;

在 Gradle 配置中 , 也配置了 Java 編譯器相關配置項 ;

JavaCompile javaCompile = variant.javaCompilejavaCompile.doLast {String[] args = ["-showWeaveInfo","-1.8","-inpath", javaCompile.destinationDir.toString(),"-aspectpath", javaCompile.classpath.asPath,"-d", javaCompile.destinationDir.toString(),"-classpath", javaCompile.classpath.asPath,"-bootclasspath", project.android.bootClasspath.join(File.pathSeparator)]log.debug "ajc args: " + Arrays.toString(args)

完整配置參考 【AOP 面向切面編程】Android Studio 中配置 AspectJ ( 下載并配置AS中 jar 包 | 配置 Gradle 和 Gradle 插件版本 | 配置 Gradle 構建腳本 ) 博客 ;

總結

以上是生活随笔為你收集整理的【AOP 面向切面编程】Android Studio 使用 AspectJ 监控方法运行原理分析的全部內容,希望文章能夠幫你解決所遇到的問題。

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