【问题标题】:How to Configure AspectJ in Android Studio如何在 Android Studio 中配置 AspectJ
【发布时间】:2016-07-11 07:53:23
【问题描述】:

我正在尝试在 Android Studio 中配置 AspectJ
但毕竟反复试验它不起作用!令人惊讶的是,我能够使其与 Eclipse Kepler 版本一起使用

我为 Android Studio 遵循的步骤

  1. 创建示例Android 项目
  2. 文件>设置>在插件部分搜索AspectJ
  3. 假设在 Studio 中除了 build.gradle 文件的配置之外没有其他事情要做
  4. 在 build.gradle (Module:app) 中添加了compile 'org.aspectj:aspectjrt:1.8.1'
  5. 返回按钮按下检测创建了Analytics_onBackPressed.aj
  6. 点击事件检测创建了Analytics_OnClick.aj
  7. 创建事件检测组件创建了Analytics_onCreate.aj
  8. 创建了上述*.aj 类将在内部调用的必要依赖类
  9. 在清单中添加了所需的权限
  10. 运行项目未检测到任何事件(按钮单击、oncreate 或返回按钮单击)
  11. 关注这些链接ReferenceLinkOneReferenceLinkTwoReferenceLinkThree

我的问题是让 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
  10. 使用 AspectJ 运行时库配置 Java 构建路径
  11. 现在在运行项目时,我能够检测到组件 oncreate,后退按钮按下

使用环境

Android 工作室:2.1.2

JRE:1.8.0

Windows 7 企业版

非常感谢任何帮助!


编辑:1,从输出来看,AspectJ 仍然没有正确配置

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

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



现在搜索 AspectJ 的属性并启用

现在运行项目,应该创建我放在插件中的 *.aj 文件中的日志。不幸的是,这些日志不会打印在 Android Studio 日志中。

我得出的结论仍然是 AspectJ 在此项目中未启用或存在配置错误

【问题讨论】:

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


    【解决方案1】:

    披露:我是inofficial AspectJ weaver plugin的作者。

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

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

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

    【讨论】:

    • 我尝试在 Eclipse 中使用 *.aj 文件和依赖项配置插件并生成 *.jar 文件。现在 Android Studio 的输出不如预期。已将输出包含在我的编辑中。有什么线索我哪里出错了吗?
    • 仅仅给出“它不起作用”就很难提供帮助。请包括 IntelliJs 编译器的输出(在重建项目上)和/或 intellij.log 以获得进一步的帮助。
    【解决方案2】:

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

    使用build.gradle 文件中的自定义代码块,我能够在我的项目中正确编译和编织.java 文件中使用注释定义的方面。但是,在使用 .aj 文件定义本机方面时,这种相同的方法对我不起作用。希望对你有帮助。

    【讨论】:

    • 从头开始。我犯了一个愚蠢的错误,导致我的原生 .aj 文件无法正确编译。在 Android Studio 中没有对 AspectJ 的正式支持的缺点是:没有编译错误。我现在可以使用该链接中概述的方法使本机 .aj 文件正常工作。
    • 这里讨论了一个库方面代码和android应用程序代码。这是哪个图书馆。我们需要创建它吗? DebugTrace.java、StopWatch.java、DebugLog.java 和 TraceAspect.java 会去哪里?我完全糊涂了
    【解决方案3】:

    IntelliJ 没有对 AspectJ 的工具支持,并且 Annotation Style AspectJ 可以在 Android Studio 上运行。只需将方面代码视为 Java 代码即可。

    详情请阅读本期 aspectj for Android studio - where is AJDT plugin

    另外,你可以使用 gradle 插件 aspectjx 可以编织 kotlin 代码和 demo is here

    【讨论】:

    • 对不起,这是不正确的。 IntelliJ Ultimate 通过捆绑的 Jetbrains 插件拥有 "native" support for AspectJAspectJ weaver plugin(我是其作者)是在 Jetbrains 添加 AspectJ 支持之前创建的。它不再维护,但可能仍适用于基于 IntelliJ 的产品的非终极版本,例如 IntelliJ Community 和 Android Studio。
    猜你喜欢
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    相关资源
    最近更新 更多