【发布时间】:2013-09-16 09:42:50
【问题描述】:
我需要在我的 gradle 构建文件中构建一些 hack,以便 Android Studio 理解一些事情。当我从命令行目录运行构建时,我不需要这些技巧。有没有办法检测何时从 Android Studio 中运行构建?也许通过环境变量等?
【问题讨论】:
标签: android gradle android-gradle-plugin
我需要在我的 gradle 构建文件中构建一些 hack,以便 Android Studio 理解一些事情。当我从命令行目录运行构建时,我不需要这些技巧。有没有办法检测何时从 Android Studio 中运行构建?也许通过环境变量等?
【问题讨论】:
标签: android gradle android-gradle-plugin
使用 AndroidStudio 2.1.1,您可以使用 idea.platform.prefix 属性:
def sysprops = System.getProperties()
if (sysprops['idea.platform.prefix'] != null) {
// Built from AndroidStudio
} else {
// Built from command line
}
【讨论】:
在命令行中使用 gradle -P blah=val 并在 build.gradle 中使用 project.hasProperty("blah") 或 project.getProperty("test") 或 if (blah ... ) 来决定是否运行您的 hack。
更新:
好的,我找到了直接的方法:)
def env = System.getProperties()
if (env['com.android.studio.gradle.project.path'] != null) {
// build from Android Studio, do magic here
}
【讨论】:
android.injected.invoked.from.ide设置在环境as well中。
杰克沃顿建议android.injected.invoked.from.ideto speed butterknife at development time by using reflection:
dependencies {
if (properties.containsKey('android.injected.invoked.from.ide')) {
implementation 'com.jakewharton:butterknife-reflect:<version>'
} else {
implementation 'com.jakewharton:butterknife:<version>'
kapt 'com.jakewharton:butterknife-compiler:<version>'
}
}
来自Twitter:
嘿 ButterKnife 用户:我正在开发基于反射的实现,以便在开发期间使用,因此不需要注释处理器。
这是什么?来自(链接:http://gradle.properties)gradle.properties 的属性?
不是IDE添加的
【讨论】: