Как настроить AspectJ в Android Studio

Я пытаюсь настроить AspectJ в Android Studio.
Но после всех проб и ошибок это не работает! Удивительно, но мне удалось заставить его работать с версией Eclipse Kepler

Шаги, которые я выполнил для 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. Запуск проекта не обнаруживает никаких событий (нажатие кнопки, oncreate или нажатие кнопки «Назад»)
  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. Настроенный путь сборки Java с библиотекой времени выполнения AspectJ
  11. Теперь во время работы над проектом я могу обнаружить компоненты при создании, нажав кнопку "Назад"

Используемая среда

Android-студия: 2.1.2

JRE: 1.8.0

Windows 7 Корпоративная

Любая помощь высоко ценится!


РЕДАКТИРОВАТЬ: 1. Судя по выходным данным, AspectJ по-прежнему настроен неправильно

В соответствии с этой ссылкой я создал файл jar из eclipse, включая файлы *.aj и соответствующую зависимость. Исключил AndroidManifest.xml при создании jar file и создал jar

Создал проект в Android Studio. Поместил этот файл *.jar в файл libs. (apps> libs). Я включил размахивание AspectJ, как показано ниже

Enabled AspectJ waving

Теперь мы выполнили поиск свойств AspectJ и включили
введите здесь описание изображения
Теперь при запуске проекта должны создаваться журналы, которые я поместил в *.aj файлов, которые находятся в плагине. К сожалению, эти журналы не печатаются в журналах Android Studio.

Форма, которую я заключаю, все еще AspectJ не включен в этом проекте ИЛИ есть ошибка конфигурации


person Sreehari    schedule 11.07.2016    source источник


Ответы (3)


Раскрытие информации: я являюсь автором неофициального плагина для AspectJ weaver.

Как указано в документации подключаемого модуля AspectJ Weaver, подключаемый модуль не поддерживает компиляция .aj файлов.

Чтобы использовать этот плагин, у вас есть два варианта:

  • Переключитесь с .aj на аспекты стиля аннотации.
  • Скомпилируйте файлы .aj вне среды IDE (IntelliJ Community/Android Studio), например, с помощью Maven/Gradle/Ant, и упакуйте их в файл .jar. Включите этот .jar в качестве зависимости в свой проект и нажмите кнопку Поиск аспектов..., как указано в документации.
person Mattias Jiderhamn    schedule 14.07.2016
comment
Я попытался настроить плагин с файлами *.aj и зависимостями в Eclipse и сгенерировал файл *.jar. Теперь вывод из Android Studio не такой, как ожидалось. Включил вывод в мой EDIT. Любая подсказка, где я ошибаюсь? - person Sreehari; 18.07.2016
comment
Трудно помочь только потому, что это не работает. Пожалуйста, включите вывод компилятора IntelliJs (при Rebuild Project) и/или intellij.log для получения дополнительной помощи. - person Mattias Jiderhamn; 21.07.2016

Я добился различных успехов, пытаясь заставить AspectJ работать в Android Studio. Эта ссылка помогла мне пройти часть пути (предполагается настройка сборки Gradle для вашего проекта). http://fernandocejas.com/2014/08/03/аспектно-ориентированное-программирование-в-андроиде/

Используя пользовательский блок кода в файле build.gradle, я смог получить аспекты, определенные с помощью аннотаций в файлах .java, которые правильно компилируются и вплетаются в мой проект. Однако этот же метод не работал у меня при определении нативных аспектов с использованием файлов .aj. Я надеюсь, что это помогает.

person Justin Hong    schedule 11.07.2016
comment
Сотрите это. Я сделал глупую ошибку, из-за которой мой родной файл .aj не смог правильно скомпилироваться. Недостатком отсутствия формальной поддержки AspectJ в Android Studio является отсутствие ошибок компиляции. Теперь я могу заставить собственные файлы .aj работать правильно, используя метод, описанный в этой ссылке. - person Justin Hong; 11.07.2016
comment
Здесь речь идет об одном аспектном коде библиотеки и коде приложения для Android. Что это за библиотека. Нужно ли нам его создавать? Куда пойдут DebugTrace.java, StopWatch.java, DebugLog.java и TraceAspect.java? я совсем запуталась - person Sreehari; 12.07.2016

В IntelliJ нет инструментальной поддержки AspectJ, а стиль аннотации AspectJ может работать в студии Android. Просто относитесь к коду аспекта как к коду Java.

Подробнее читайте в этом выпуске aspectj для студии Android - где плагин AJDT

Кроме того, вы можете использовать плагин Gradle aspectjx, который может сплести код kotlin и демонстрация здесь

person firefly1126    schedule 14.07.2016
comment
Извините, но это неправильно. IntelliJ Ultimate имеет встроенная поддержка AspectJ через встроенный плагин Jetbrains. плагин AspectJ weaver, автором которого я являюсь, был создан до Jetbrains. добавлена ​​поддержка AspectJ. Он больше не поддерживается, но может по-прежнему работать для выпусков продуктов на базе IntelliJ, отличных от Ultimate, таких как IntelliJ Community и Android Studio. - person Mattias Jiderhamn; 14.07.2016