概述
在写代码之前,外面首先要搞清楚各个类的引入(依赖),把这个搞清楚了,那么你在后续的开发中就不用操心当你新建一个类的时候的导包问题了,尤其是这个类很多包都有的时候,咬牙切齿!
说实话这个很折磨人,尤其是公司的网不好的时候,那时你会怀疑:究竟是我引入的姿势不对,还是破网有问题。
本文的引入都是我实际操作中遇到的,如果我说的不对,那么一定是studio的问题。
Transform的引入
首先看一下路径:
import com.android.build.api.transform.*
这个的引入是费了一番功夫的。我们能百度的到的大部分文章的引入是这样的:
compile 'com.android.tools.build:transform-api:1.5.0'
但是呢。。。我这引入的时候没有作用。。。没有作用的意思就是:build成功了,就是找不到类。
怎么解决呢?这个跟下个一起说,因为下面的引入我也遇到问题了。
commons的引入
这个类的作用是当我们解析文件的时候,使用IOUtils:new ClassReader(IOUtils.toByteArray(inputStream)),还有:FileUtils:FileUtils.copyDirectory(directoryInput.file, dest)。
import org.apache.commons.io.FileUtils
import org.apache.commons.io.IOUtils
关于他的引入,网上有部分是这样的:compile 'commons-io:commons-io:2.5
我这引入的时候还是不行。。。
怎么解决的呢?还得往下看。
ASM的引入
compile 'org.ow2.asm:asm:5.0.3'
compile 'org.ow2.asm:asm-commons:5.0.3'
验证可用
问题解决
上面的三个重要引入,我竟然有俩都过不去,也是醉了。
Commons的引入呢,我通过下载jar包解决了,但是transform的引入怎么也解决不了。
后来在别人的项目里,我发现了他是这么用的:compile 'com.android.tools.build:gradle:2.3.3'
。按照命运的安排,我当然还是编译不过去的,我一度怀疑我的插件化之路就此断绝了,因为公司破网的原因,我每次修改编译都要好久,每次试一个新的引入都得build十来分钟,我真的是要疯了。
。。。
万万没想到,最后我还是解决了这个问题:
compile 'com.android.tools.build:gradle:3.1.0'
这个跟前面的引入有什么区别呢?呵呵,这么明显看不到吗?当然是版本不一样啊!!!这个可是我从项目的gradle中COPY过来的,原文是:classpath 'com.android.tools.build:gradle:3.1.0'
。是不是很熟悉。。。
是的,就这样解决了,transform+Commons+ASM的引入,只用这一个就全搞定了。
所以最后贴个图把,这是我plugin的build的最终版本,拿生命试出来的:
apply plugin: 'groovy'
apply plugin: 'maven'
apply plugin: 'java'
dependencies {
//gradle sdk
compile gradleApi()
//groovy sdk
compile localGroovy()
compile 'com.android.tools.build:gradle:3.1.0'
}
repositories {
google()
jcenter()
mavenCentral()
}
compileGroovy {
sourceCompatibility = 1.7
targetCompatibility = 1.7
options.encoding = "UTF-8"
}
//group和version在后面使用自定义插件的时候会用到
group='com.hhh.plugin'
version='1.0.0'
uploadArchives {
repositories {
mavenDeployer {
repository(url: uri('D:\snapshotRepo'))
}
}
}
最后
以上就是想人陪棉花糖为你收集整理的AOP+ASM+插件化总结--实现基于注解的埋点和统计-- 引入篇的全部内容,希望文章能够帮你解决AOP+ASM+插件化总结--实现基于注解的埋点和统计-- 引入篇所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复