[英]How to optionally apply some plugins using Kotlin DSL and plugins block with gradle and android
我想選擇應用一些插件來改善開發時間的構建時間。
我的意思是我有這個:
app/gradle.build.kts
:
plugins {
id("com.android.application")
id("com.google.firebase.crashlytics")
}
但我不想一直應用 firebase crashlytics 插件(以及其他插件,如性能監視器),但如果我嘗試訪問plugins
塊內的project
,我會得到:
plugins {
id("com.android.application")
if (!project.hasProperty("build_fast")) {
id("com.google.firebase.crashlytics")
}
}
我得到:
'val Build_gradle.project: Project' can't be called in this context by implicit receiver. Use the explicit one if necessary
所以我的問題是:
我可以使用System.getenv("CI")
訪問 System env 變量,但是從 android 工作室中替換這些值目前對我來說有點麻煩,有人可以展示一種更新這些變量的方法嗎?
如何使用project.hasPropperty("")
來做到這一點?
你不能。 插件 DSL 受限於你能做什么和不能做什么。 這記錄在插件 DSL 的限制中。
要有條件地應用插件,您必須使用Project.apply(T)
:
plugins {
id("com.android.application")
id("com.google.firebase.crashlytics") apply false
}
apply false
是必要的,因為我們不想應用插件,但我們想要該插件可用的類型或類,以便我們可以以編程方式以類型安全的方式應用插件。
import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsPlugin
plugins {
id("com.android.application")
id("com.google.firebase.crashlytics") apply false
}
apply<CrashlyticsPlugin>()
我可以使用
System.getenv("CI")
訪問 System env 變量,但是從 android 工作室中替換這些值目前對我來說有點麻煩,有人可以展示一種更新這些變量的方法嗎?
您無法更新環境( System.getenv()
),它是不可修改的 map。
我該如何使用
project.hasPropperty("")
將其用作您已完成的條件:
import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsPlugin
plugins {
id("com.android.application")
id("com.google.firebase.crashlytics") apply false
}
if (!hasProperty("build_fast")) {
apply<CrashlyticsPlugin>()
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.