gpt4 book ai didi

android gradle 增量 lint

转载 作者:行者123 更新时间:2023-11-30 00:07:50 35 4
gpt4 key购买 nike

因为我会做 Android 的增量 Lint 检查,我看了一些文章,我发现我可以在 build.gradle 中添加一个任务,然后通过重写 LintGradleClient 来传递一些参数,它应该按照这篇文章,但是我按照文章描述的,在增加LintGradle参数AndroidProject cannot be got,我用kotlin实现的地方。谁能帮帮我?这里是文章url路径https://www.jianshu.com/p/4833a79e9396

我在 get AndroidProject as Kotlin 中的代码:

fun getAndroidProject(): AndroidProject{
var gradleConn = GradleConnector.newConnector()
gradleConn.forProjectDirectory(getProject().getProjectDir())
var modelProject = gradleConn.connect().getModel(com.android.builder.model.AndroidProject::class.java)
return modelProject
}

然后我运行任务,它告诉我这样:

No model of type 'AndroidProject' is available in this build.

最佳答案

那篇文章的android插件版本是旧的,从3.0.0开始获取AndroidProject的方式已经改变了。

看完gradle android plugin的源码后,com.android.build.gradle.tasks.LintBaseTask给出了一个线索:

protected AndroidProject createAndroidProject(Project gradleProject) {
String modelName = AndroidProject.class.getName();
ToolingModelBuilder modelBuilder = this.toolingRegistry.getBuilder(modelName);

assert modelBuilder != null;

ExtraPropertiesExtension ext = gradleProject.getExtensions().getExtraProperties();
ext.set("android.injected.build.model.only.versioned", Integer.toString(3));
ext.set("android.injected.build.model.disable.src.download", Boolean.valueOf(true));

AndroidProject var5;
try {
var5 = (AndroidProject)modelBuilder.buildAll(modelName, gradleProject);
} finally {
ext.set("android.injected.build.model.only.versioned", (Object)null);
ext.set("android.injected.build.model.disable.src.download", (Object)null);
}

return var5;
}

继续追踪,我们可以发现:
1. toolingRegistryGlobalScope.getToolingRegistry()
获取2. GlobalScopeVariantScope.getGlobalScope()
获取3. VariantScopeApplicationVariant.getVariantData().getScope()

获取

ApplicationVariantcom.android.application插件中applicationVariants的元素,可以遍历applicationVariants 列出来获取它。

这是app/build.gradle中的示例代码:

android {
// other script...

applicationVariants.all { variant ->
def globalScope = variant.variantData.scope.globalScope
String modelName = AndroidProject.class.getName()
ToolingModelBuilder modelBuilder = globalScope.toolingRegistry.getBuilder(modelName)
AndroidProject androidProject = (AndroidProject) modelBuilder.buildAll(modelName, project)
// create your task to do something
}
}

关于android gradle 增量 lint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48654487/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com