android gradle is插件,android gradle 插件创建 configuration
写了一个gradle 插件,现在的需求是需要通过
productFlavors
的类型来创建不同的
configuration
目前代码:
private Project project
private Configuration embedConf
private Set<Configuration> embedConf2
private Set<ResolvedArtifact> artifacts
@Override
void apply(Project project) {
this.project = project
checkAndroidPlugin()
createConfiguration()
project.afterEvaluate {
resolveArtifacts()
project.android.libraryVariants.all { variant ->
processVariant(variant)
}
}
}
//检查插件
private void checkAndroidPlugin() {
if (!project.plugins.hasPlugin('com.android.library')) {
throw new ProjectConfigurationException('fat-aar-plugin must be applied in project that' +
' has android library plugin!', null)
}
}
//创建标签插件
private void createConfiguration() {
def listener = new DependencyResolutionListener() {
@Override
void beforeResolve(ResolvableDependencies resolvableDependencies) {
embedConf.dependencies.each { dependency ->
project.dependencies.add('provided', dependency)
//println 'fat-aar-->[dependency] ' + dependency.name
}
embedConf2.each { configuration ->
configuration.dependencies.each { dependency ->
project.dependencies.add('provided', dependency)
//println 'fat-aar-->[dependency] ' + dependency.name
}
}
project.gradle.removeListener(this)
}
@Override
void afterResolve(ResolvableDependencies resolvableDependencies) {}
}
embedConf2 = new HashSet<Configuration>()
project.android.libraryVariants.all { BaseVariant variant ->
variant.productFlavors.each { flavors ->
// println 'fat-aar-->[flavors] ' + project.name
// println 'fat-aar-->[flavors] ' + flavors.name.capitalize()
def cname = flavors.getName() + 'Embed'
if (project.configurations.findByName(cname) == null) {
def configg = project.configurations.create(cname.toString())
configg.visible = false
embedConf2.add(configg)
println 'fat-aar-->[configuration] ' + project.configurations.getByName(cname)
}
}
}
embedConf = project.configurations.create('embed')
println 'fat-aar-->[configuration] ' + project.configurations.getByName('embed')
embedConf.visible = false
project.gradle.addListener(listener)
}
现在遇到问题是 创建的 embed configuration 是可以正常使用,但是通过遍历productFlavors 的报错,看错误日志像是构建的顺序问题
错误日志:
➜ ./gradlew module-oldminirpc:assembleLazadaDebug
Parallel execution is an incubating feature.
fat-aar-->[configuration] configuration ':module-apdid:embed'
Incremental java compilation is an incubating feature.
fat-aar-->[configuration] configuration ':module-apdid:lazadaEmbed'
fat-aar-->[configuration] configuration ':module-apdid:aeEmbed'
fat-aar-->[embed detected][jar] com.alipay.stunsdk:stunclientsdk:1.0.2
fat-aar-->[configuration] configuration ':module-face:embed'
fat-aar-->[configuration] configuration ':module-logger:embed'
fat-aar-->[configuration] configuration ':module-oldminirpc:embed'
FAILURE: Build failed with an exception.
* Where:
Build file '/Users/gnaixx/Documents/AntWork/Code/android-alipaysecuritysdk/module-oldminirpc/build.gradle' line: 41
* What went wrong:
A problem occurred evaluating project ':module-oldminirpc'.
> Could not find method aeEmbed() for arguments [com.alipay.apsecuritysdk.mrpc:mrpc-core:1.0.2:core] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 1.033 secs
android gradle is插件,android gradle 插件创建 configuration相关推荐
- 【Android Gradle 插件】Extension 扩展类型 ( Module 引入插件类型 | application 插件 | library 插件 | Variants 变体列表 )
文章目录 一.Module 引入插件类型 1.com.android.application 插件 2.com.android.library 插件 二.Extension 扩展类型 三.applic ...
- Android 热修复使用Gradle Plugin1.5改造Nuwa插件
随着谷歌的Gradle插件版本的不断升级,Gradle插件现在最新的已经到了2.1.0-beta1,对应的依赖为com.android.tools.build:gradle:2.0.0-beta6,而 ...
- android studio漫画,Android Studio 3.0 更新Gradle 插件填坑
一.Java8确实快了 为了提升编译速度,这几天用上了 AS 3.0 和 Gradle 3.0 插件,不得不说不论是 AS 3.0,还是 Gradle 3.0 都变化非常大,具体的更新日志参考下官网, ...
- 【Android Gradle 插件】build.gradle 中的 android 配置 ( 配置项 | compileSdkVersion 配置 | buildToolsVersion 配置 )
文章目录 一.列举 build.gradle 中常用 android 模块配置 二.android 模块常用配置介绍 1.compileSdkVersion 配置 2.buildToolsVersio ...
- 【Android 插件化】Hook 插件化框架 ( 创建插件应用 | 拷贝插件 APK | 初始化插件包 | 测试插件 DEX 字节码 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- Android Gradle 构建工具(Android Gradle Build Tools)是什么?
转载地址:http://mrfu.me/android/2015/07/17/New_Android_Gradle_Build_Tools/ 译者地址:[翻]一览新的 Android Gradle 构 ...
- replugin源码解析之replugin-plugin-gradle(插件的gradle插件)
前言 replugin-plugin-gradle 是 RePlugin 插件框架中提供给replugin插件用的gradle插件,是一种动态编译方案实现. 主要在插件应用的编译期,基于Transfo ...
- linux 搭建gradle android jenkins打包机器,gradle 依赖 jar问题
app/build.gradle文件 apply plugin: 'com.android.application'android {compileSdkVersion 25buildToolsVer ...
- Android Studio 使用教程(4)---gradle项目构建
Android Studio 使用教程(四)之gradle项目构建 1.gradle的概念 2.gradle配置jar包,和libs文件夹导入jar包的区别 3.签名打包: (1)Studio ...
- android 开发sdk 找不到java类_开发Cordova插件(Android)时找不到源Java类
我正在开发Cordova的插件,该插件使用名为pagseguro的巴西付款api. 但这不是重点. 当我将cordova插件添加到项目中并运行" cordova run android&qu ...
最新文章
- php 输出函数结果,PHP向浏览器输出内容的4个函数总结
- 用axis开发webservice实践
- 团队作业-Beta冲刺(周三)
- k66 pit计时功能配置_PIT,JUnit 5和Gradle –仅需额外的一行配置
- java+set+split_阿里资深工程师教你如何优化 Java 代码!
- 利用wojilu框架仿一个网站的全过程(Step by Step利用wojilu框架开发网站系列二 附源码)...
- 使用一重循环打印乘法口诀
- 知识图谱论文梳理【 HyTE:基于超平面的时序知识图谱】
- 将Kali Linux中的Firefox浏览器语言设置为中文
- 洛谷P1129 [ZJOI2007] 矩阵游戏 题解
- 吴裕雄 18-MySQL GROUP BY 语句
- 千万别惹程序员,否则他会在代码注释里告诉这家公司有多坑
- 最好用的 Base64 在线工具
- AI笔记: 数学基础之二项分布与二项式定理
- python和access哪个好过计算机二级_大一考计算机二级,那考office、C语言、VB、Java、Access还是Python好呢?...
- python文件写入后,但文件还是空白
- 使用物联网卡发送短信
- 如何学习无线电通联字母解释法和通联术语
- 包机制 java (来自秦疆老师的视频学习)
- 使用 Chrome 开发者工具研究一个基于 Angular 开发的网站源代码
热门文章
- matplotlib 知识点整理:ax与figure
- python 笔记:if __name__==‘main’
- 用Tableau画Voronoi Treemap
- php+date+timezoe,PHP 字符串
- 嵌入层 tf.keras.layers.Embedding() 介绍【TensorFlow2入门手册】
- 涉及支付,资金方案的操作要考虑的问题
- 使用Atomikos Transactions Essentials实现多数据源JTA分布式事务--转载
- 海量存储系列下--转载,值得一读
- spring AOP策略模式使用
- 关于预付卡,您需要知道的事儿