如何在Android Studio中配置AspectJ

时间:2016-07-11 07:53:24

标签: android android-studio aspectj aspectj-maven-plugin

我正在尝试在Android Studio中配置AspectJ
但经过一切反复试验后,它无法正常工作!令人惊讶的是,我能够使用Eclipse Kepler版本工作

我为Android Studio执行的步骤

  1. 创建样本Android项目
  2. 文件>设置>在插件部分Plugin for AspectJ
  3. 中搜索了AspectJ
  4. 假设在Studio中没有其他工作要做,除了build.gradle文件的配置
  5. compile 'org.aspectj:aspectjrt:1.8.1'添加到build.gradle(Module:app)
  6. 后退按钮按下检测
  7. 创建了Analytics_onBackPressed.aj
  8. 点击事件检测
  9. 创建了Analytics_OnClick.aj
  10. 组件创建事件检测
  11. 创建了Analytics_onCreate.aj
  12. 创建必要的依赖类,上面提到的*.aj类将在内部调用
  13. 在Manifest中添加了所需的权限
  14. 运行项目未检测到任何事件(按钮单击,按钮创建或后退按钮单击)
  15. 点击这些链接ReferenceLinkOneReferenceLinkTwoReferenceLinkThree
  16.   

    我的问题是让AspectJ使用Android Studio

    所需的更多问题


    Eclipse中遵循的步骤并使AspectJ正常工作

    1. 已下载Eclipse开普勒版
    2. 通过安装新软件选项搜索http://download.eclipse.org/tools/ajdt/43/update
    3. 已安装AspectJ Development Tools (Required)
    4. 创建示例android项目
    5. 后退按钮按下检测
    6. 创建了Analytics_onBackPressed.aj
    7. 点击事件检测
    8. 创建了Analytics_OnClick.aj
    9. 组件创建事件检测
    10. 创建了Analytics_onCreate.aj
    11. 在清单文件中添加了所需的权限
    12. 右键单击项目并通过以下方式将项目转换为AspectJ Converted project to AspectJ
    13. 使用AspectJ运行时库配置Java构建路径
    14. 现在,在运行项目时,我能够检测到组件oncreate,后退按钮按下
    15. 使用环境

        

      Android Studio:2.1.2

           

      JRE:1.8.0

           

      Windows 7企业版

      非常感谢任何帮助!

      编辑:1,从输出中,仍未正确配置AspectJ

      根据this link,我从eclipse创建了jar文件,包括*.aj个文件和相应的依赖项。创建AndroidManifest.xml并创建jar file

      时排除jar

      在Android Studio中创建项目。将此* .jar文件放在libs文件中。 (apps> libs)。我已启用AspectJ挥动,如下所示

      Enabled AspectJ waving

      现在搜索了AspectJ的属性并启用了
      enter image description here
      现在运行该项目,应该创建我放在插件中的*.aj文件中的日志。不幸的是,这些日志不会在Android Studio日志中打印出来。

      我结束的表格仍未在此项目中启用AspectJ或存在配置错误

3 个答案:

答案 0 :(得分:3)

披露:我是inofficial AspectJ weaver plugin

的作者

AspectJ weaver plugin documentation所述,插件不支持支持编译.aj文件。

要使用此插件,您有两种选择:

  • .aj切换到annotation style方面。
  • 编译IDE(IntelliJ社区/ Android Studio)外部的.aj文件,例如使用Maven / Gradle / Ant,并将它们打包成.jar。在项目中包含此.jar作为依赖项,然后根据文档单击搜索方面... 按钮。

答案 1 :(得分:1)

I have had various success trying to get AspectJ working in Android Studio. This link helped me get part of the way there (assumes Gradle build setup for your project). http://fernandocejas.com/2014/08/03/aspect-oriented-programming-in-android/

Using the custom block of code in the build.gradle file, I was able to get aspects defined using annotations in .java files compiling and weaving properly in my project. However, this same method did not work for me when defining native aspects using .aj files. I hope it helps.

答案 2 :(得分:0)

IntelliJ没有对AspectJ的工具支持,而注释风格AspectJ可以在Android工作室上运行。只需将方面代码视为Java代码即可。

有关详细信息,请阅读此问题 aspectj for Android studio - where is AJDT plugin

此外,您可以使用gradle插件aspectjx来编织kotlin代码和demo is here