之前对gradle脚本不熟悉,最近因为工作需要才学一点点基础知识,不过也踩了一些坑,记录一下,网上其实很多文章写的很好,有时候我们根据某一篇文章然后实战的时候,还是会出现问题,这个时候就需要看怎么去解决了。
坑一
Unable to load class
这个问题找的时间最久,字面意思就是,我们在其他module使用我们的gradle工程时候,找不到我们自定义的groovy类。
可能出错的地方有:
1.包名要手动添加
2.properties文件里面的路径也要写对
3.我们的包名必须要写在groovy里面,我最开始就没这么写,结果就一直加载不到类
4.groovy文件直接调用java类
5.其他的就是正常创建了
buildscript {
repositories {
google()
mavenCentral()
jcenter()
}
}
apply plugin:'groovy'
apply plugin:'maven'
dependencies {
implementation gradleApi() //必须
implementation localGroovy() //必须
//如果要使用android的API,需要引用这个,实现Transform的时候会用到
implementation "com.android.tools.build:gradle:4.1.0"
}
repositories {
google()
jcenter()
mavenCentral() //必须
}
def group='com.fred.asm' //组
def version='1.0.0' //版本
def artifactId='gradleDemo' //唯一标示
//将插件打包上传到本地maven仓库
uploadArchives {
repositories {
mavenDeployer {
pom.groupId = group
pom.artifactId = artifactId
pom.version = version
//指定本地maven的路径,在项目根目录下
repository(url: uri('../repos'))
}
}
}
//引入本地仓库
maven {
url uri('F:\\文件夹\\文件夹\\repos') //指定本地maven的路径,在项目根目录下,这里用的是绝对路径,也可以改成相对路径,参考文章里面有
}
//引入本地仓库中的插件依赖
classpath 'com.fred.asm:gradleDemo:1.0.0'
// 其他模块使用
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'com.fred.asm'
}
// 这样引用
implementation 'com.fred.asm:gradleDemo:1.0.0'
参考链接
Gradle如何创建插件
Gradle自定义插件
Android自定义Gradle插件的3种方式
gradle创建插件遇到的坑