在gradle任务中获取Android SDK目录

在gradle任务中获取Android SDK目录,android,android-gradle-plugin,Android,Android Gradle Plugin,最近,android的gradle插件得到了更新(使用android studio),之后,以前访问SDK目录的方法停止了工作。表情 ${android.plugin.sdkDirectory} 在旧版本中工作的,现在返回错误 Error:(42, 0) No such property: sdkDirectory for class: com.android.build.gradle.LibraryPlugin 获得正在使用的android SDK目录的正确方法是什么,最好独立于用户的配置

最近,android的gradle插件得到了更新(使用android studio),之后,以前访问SDK目录的方法停止了工作。表情

${android.plugin.sdkDirectory}
在旧版本中工作的,现在返回错误

Error:(42, 0) No such property: sdkDirectory for class: com.android.build.gradle.LibraryPlugin
获得正在使用的android SDK目录的正确方法是什么,最好独立于用户的配置,如插件和gradle版本?脚本需要与多个用户共享。

您可以使用

$System.env.ANDROID_HOME

gradle.properties
set location
sdkdir=/home/user/android sdk
中,然后在gradle中,您可以使用
$sdkdir

因为之前的所有答案都取决于正常配置之上的环境或特定用户干预,所以我将发布技术上混乱的修复

if (android.hasProperty('plugin')) {
    if (android.plugin.hasProperty('sdkHandler')) {
        androidPath = android.plugin.sdkHandler.sdkFolder
    } else {
        androidPath = android.plugin.sdkDirectory
    }
} else {
    androidPath = android.sdkDirectory
}

与以前的所有方法不同,这实际上是可行的,但它看起来仍然很粗糙。

我使用的是Android gradle插件v1.2.3,这很好:

${android.sdkDirectory}

在shell中导出ANDROID_HOME=/xxx/xxx/然后通过gradle文件中的System.env.ANDROID_HOME使用它。

编写时会产生语法错误。将示例更正为
println“${System.env.ANDROID_HOME}”
返回
null
,因为Android studio的默认行为是通过local.properties设置路径,并且我特别寻找一些与配置无关的东西。不幸的是,这在Android Gradle插件v中不再起作用。1.1.3. 现在缺少属性android.plugin。Gradle插件版本1.1.3的任何解决方案?在这种情况下,请使用
android.sdkDirectory
(不带
.plugin
)。我已经相应地更新了答案。