如何在Android Studio中配置AspectJ

我正在尝试在Android Studio中配置AspectJ
但毕竟尝试和错误它不工作! 令人惊讶的是,我能够使它与Eclipse的开普勒版本

我遵循的Android Studio的步骤

  1. 创建示例Android项目
  2. 文件>设置>在插件部分搜索AspectJ AspectJ的插件
  3. 假设Studio中除了build.gradle文件的配置外,没有更多的工作要做
  4. 添加compile 'org.aspectj:aspectjrt:1.8.1'到build.gradle(模块:应用程序)
  5. 后退按钮检测创建Analytics_onBackPressed.aj
  6. 点击事件检测创建了Analytics_OnClick.aj
  7. 为创建事件检测的组件创建Analytics_onCreate.aj
  8. 创建必要的依赖类,上面提到的*.aj类将在内部调用
  9. 在清单中添加了所需的权限
  10. 运行项目没有检测到任何事件(点击按钮,点击或返回按钮)
  11. 遵循这些链接ReferenceLinkOne , ReferenceLinkTwo和ReferenceLinkThree

我的问题是使AspectJ与Android Studio一起工作所需要的更多东西

在Eclipse中遵循的步骤,并得到AspectJ的工作

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

使用的环境

Android Studio:2.1.2

JRE:1.8.0

Windows 7企业版

任何帮助,高度赞赏!


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

根据这个链接 ,我从eclipse创建了jar文件,包括*.aj文件和相应的依赖项。 在创建jar file和创建jar排除了AndroidManifest.xml

在Android Studio中创建项目。 将这个* .jar文件放在libs文件中。 (apps> libs) 。 我已经使AspectJ如下所示挥动

启用AspectJ挥舞着

现在搜索AspectJ的属性并启用
在这里输入图像描述
现在运行该项目,应该创建日志,我把它放在插件中的*.aj文件。 不幸的是,这些日志不会打印在Android Studio日志中。

我正在结束的表格仍然AspectJ没有在这个项目中启用或有一个配置错误

披露:我是AspectJ weaver插件的作者 。

如AspectJ weaver插件文档中所述 ,该插件支持编译.aj文件。

要使用这个插件,你有两个选择:

  • .aj切换到注释样式方面。
  • 在IDE(IntelliJ Community / Android Studio)之外编译.aj文件,例如使用Maven / Gradle / Ant,并将它们打包到一个.jar 。 将该.jar作为依赖包含在您的项目中,然后单击搜索方面…按钮,根据文档。

我已经有了各种成功,试图让AspectJ在Android Studio中工作。 这个链接帮助我得到了部分方法(假设您的项目为Gradle构建设置)。 http://fernandocejas.com/2014/08/03/aspect-oriented-programming-in-android/

build.gradle文件中使用自定义的代码块,我可以使用.java文件中的注释在我的项目中正确编译和编译。 但是,使用.aj文件定义本机方面时,这种方法对我来说并不适用。 我希望它有帮助。

IntelliJ没有AspectJ的工具支持,并且Annotation Style AspectJ可以在Android studio上工作。 只要将方面代码视为Java代码即可。

有关详细信息,请阅读有关Android Studio的问题aspectj – AJDT插件在哪里

另外,你可以使用Gradle插件aspectjx ,它可以编织kotlin代码, demo在这里