如何利用 Javassist 去优雅的实现一个异常捕获功能,可以参考文章一文应用 AOP | 最全选型考量 + 边剖析经典开源库边实践,美滋滋
这里主要说一下文章里面没讲到的创建 gradle 步骤以及有哪些坑
第一步
创建一个 Java Library 并且命名为 buildSrc
第二步
将没有的文件全删除掉,并且把 java 文件夹重命名为 groovy ,并且创建 resources 文件夹,
在 resources 文件夹下面创建 META-INF 文件夹,在 META-INF 文件夹下面创建 gradle-plugins 文件夹,在 gradle-plugins 文件夹下面创建 MyPlugin.properties 文件。
注意:这里的 MyPlugin 是你的这个插件的名字,在引用的时候会用到。
作为上面这些后,你的 library 的目录结构大概会是下图这样:
WX20190509-100030@2x.png
第二步
在 build.gradle 中,你需要修改成如下所示:
apply plugin: 'groovy' //必须
repositories {
google() //必须
jcenter() //必须
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.tools.build:gradle:3.4.0'
implementation 'org.javassist:javassist:3.20.0-GA'
implementation gradleApi() //必须
implementation localGroovy() //必须
}
第三步
创建你的 plugin 类:
package com.lzx.plugin
import com.android.build.gradle.AppExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
class PathPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
def android = project.extensions.findByType(AppExtension)
android.registerTransform(new PathTransform(project))
}
}
这里有一个坑,就是包名 android studio 是不会自动导入的,所以需要你手动写进去,不然就会报错说找不到。
接下来就按照文章中的写法编写插件。
第四步
在 MyPlugin.properties 文件中添加下面内容:
implementation-class=com.lzx.plugin.PathPlugin
路径就是上面 PathPlugin 的路径。
第五步
使用插件:
在 app 的 build.gradle 文件中这样使用即可:
apply plugin: 'MyPlugin'
网友评论