写了一个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

950-390_%E7%94%BB%E6%9D%BF-1.jpg

android gradle is插件,android gradle 插件创建 configuration相关推荐

  1. 【Android Gradle 插件】Extension 扩展类型 ( Module 引入插件类型 | application 插件 | library 插件 | Variants 变体列表 )

    文章目录 一.Module 引入插件类型 1.com.android.application 插件 2.com.android.library 插件 二.Extension 扩展类型 三.applic ...

  2. Android 热修复使用Gradle Plugin1.5改造Nuwa插件

    随着谷歌的Gradle插件版本的不断升级,Gradle插件现在最新的已经到了2.1.0-beta1,对应的依赖为com.android.tools.build:gradle:2.0.0-beta6,而 ...

  3. android studio漫画,Android Studio 3.0 更新Gradle 插件填坑

    一.Java8确实快了 为了提升编译速度,这几天用上了 AS 3.0 和 Gradle 3.0 插件,不得不说不论是 AS 3.0,还是 Gradle 3.0 都变化非常大,具体的更新日志参考下官网, ...

  4. 【Android Gradle 插件】build.gradle 中的 android 配置 ( 配置项 | compileSdkVersion 配置 | buildToolsVersion 配置 )

    文章目录 一.列举 build.gradle 中常用 android 模块配置 二.android 模块常用配置介绍 1.compileSdkVersion 配置 2.buildToolsVersio ...

  5. 【Android 插件化】Hook 插件化框架 ( 创建插件应用 | 拷贝插件 APK | 初始化插件包 | 测试插件 DEX 字节码 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  6. Android Gradle 构建工具(Android Gradle Build Tools)是什么?

    转载地址:http://mrfu.me/android/2015/07/17/New_Android_Gradle_Build_Tools/ 译者地址:[翻]一览新的 Android Gradle 构 ...

  7. replugin源码解析之replugin-plugin-gradle(插件的gradle插件)

    前言 replugin-plugin-gradle 是 RePlugin 插件框架中提供给replugin插件用的gradle插件,是一种动态编译方案实现. 主要在插件应用的编译期,基于Transfo ...

  8. linux 搭建gradle android jenkins打包机器,gradle 依赖 jar问题

    app/build.gradle文件 apply plugin: 'com.android.application'android {compileSdkVersion 25buildToolsVer ...

  9. Android Studio 使用教程(4)---gradle项目构建

    Android Studio 使用教程(四)之gradle项目构建 1.gradle的概念 2.gradle配置jar包,和libs文件夹导入jar包的区别 3.签名打包:     (1)Studio ...

  10. android 开发sdk 找不到java类_开发Cordova插件(Android)时找不到源Java类

    我正在开发Cordova的插件,该插件使用名为pagseguro的巴西付款api. 但这不是重点. 当我将cordova插件添加到项目中并运行" cordova run android&qu ...

最新文章

  1. php 输出函数结果,PHP向浏览器输出内容的4个函数总结
  2. 用axis开发webservice实践
  3. 团队作业-Beta冲刺(周三)
  4. k66 pit计时功能配置_PIT,JUnit 5和Gradle –仅需额外的一行配置
  5. java+set+split_阿里资深工程师教你如何优化 Java 代码!
  6. 利用wojilu框架仿一个网站的全过程(Step by Step利用wojilu框架开发网站系列二 附源码)...
  7. 使用一重循环打印乘法口诀
  8. 知识图谱论文梳理【 HyTE:基于超平面的时序知识图谱】
  9. 将Kali Linux中的Firefox浏览器语言设置为中文
  10. 洛谷P1129 [ZJOI2007] 矩阵游戏 题解
  11. 吴裕雄 18-MySQL GROUP BY 语句
  12. 千万别惹程序员,否则他会在代码注释里告诉这家公司有多坑
  13. 最好用的 Base64 在线工具
  14. AI笔记: 数学基础之二项分布与二项式定理
  15. python和access哪个好过计算机二级_大一考计算机二级,那考office、C语言、VB、Java、Access还是Python好呢?...
  16. python文件写入后,但文件还是空白
  17. 使用物联网卡发送短信
  18. 如何学习无线电通联字母解释法和通联术语
  19. 包机制 java (来自秦疆老师的视频学习)
  20. 使用 Chrome 开发者工具研究一个基于 Angular 开发的网站源代码

热门文章

  1. matplotlib 知识点整理:ax与figure
  2. python 笔记:if __name__==‘main’
  3. 用Tableau画Voronoi Treemap
  4. php+date+timezoe,PHP 字符串
  5. 嵌入层 tf.keras.layers.Embedding() 介绍【TensorFlow2入门手册】
  6. 涉及支付,资金方案的操作要考虑的问题
  7. 使用Atomikos Transactions Essentials实现多数据源JTA分布式事务--转载
  8. 海量存储系列下--转载,值得一读
  9. spring AOP策略模式使用
  10. 关于预付卡,您需要知道的事儿