日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android gradle is插件,android gradle 插件创建 configuration

發布時間:2025/3/21 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。