Poetry 是仿照JakeWharton的Hugo项目实现的AOP日志框架.核心AOP的使用方法都来自Hugo.Hugo在
com.android.tools.build:gradle:3.0+
及以上的版本无法使用,但JakeWharton好像并没有像维护Hugo项目的意思.所以在此复刻了该项目的实现.(功能还有缺失,后续会加上)
gradle(project)
buildscript {
repositories {
google()
jcenter()
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
...
//TODO how did i cancel this import? Unable to load class 'org.aspectj.bridge.MessageHandler'.
classpath 'org.aspectj:aspectjtools:1.8.9'
classpath "com.deity.poetry:poetry:1.0.12"
}
}
build.gradle(app)
apply plugin: 'com.deity.poetry'
@DebugLog
public String getName(String first, String last) {
SystemClock.sleep(15); // Don't ever really do this!
return first + " " + last;
}
V/Example: ⇢ getName(first="Jake", last="Wharton")
V/Example: ⇠ getName [16ms] = "Jake Wharton"
毕竟复刻,使用方式跟Hugo是一致的.弄这个项目主要是学习Gradle插件的开发. 以下参考资料给我提供了很大的帮助:
- 阿拉神农-深入理解Android之AOP
- 在 Android Studio 中自定义 Gradle 插件
- 深入理解Android之Gradle
- Hugo源码分析
- Groovy中文文档
- 如何使用Android Studio开发Gradle插件
- multi-library-bintray
- 如何上传插件
- Gradle for Android 第一篇( 从 Gradle 和 AS 开始 )
- 转载Gradle 插件 发布到本地和远程仓库
- Writing Custom Plugins
- 发布时如何不带gradle.plugin前缀 How do I use the Plugin Publishing Plugin?