在gradle任务中获取Android SDK目录

3

最近,随着Android Studio的更新,用于Android的Gradle插件也得到了更新。在此之后,以前获取SDK目录的方式已经无法使用。

${android.plugin.sdkDirectory}

在较旧版本中可以正常工作的代码现在出现了错误。

Error:(42, 0) No such property: sdkDirectory for class: com.android.build.gradle.LibraryPlugin

如何正确获取正在使用的Android SDK目录,最好是独立于用户配置(例如插件和gradle版本)的方式?该脚本需要与多个用户共享。

5个回答

6

由于之前的所有答案都依赖于特定环境或用户的干预操作,因此我将提供我的技术性解决方案。

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

与以往所有方法不同,这个方法确实有效,但看起来仍然有些hacky。

很遗憾,自从Android Gradle插件v.1.1.3以后,这个方法已经不再适用了。属性android.plugin现在已经不存在了。 - ohaleck
Gradle插件版本1.1.3有什么解决方案吗? - FoY
1
在这种情况下,使用android.sdkDirectory(不包括.plugin)。我已经相应地更新了答案。 - sschuberth

4
gradle.properties文件中设置位置sdkdir=/home/user/android-sdk,然后在gradle中可以使用$sdkdir变量。

3

我正在使用 Android gradle 插件 v1.2.3,这个版本是可以正常工作的:

${android.sdkDirectory}

0

您可以使用

$System.env.ANDROID_HOME

按照原文的写法会导致语法错误。将示例修正为println "${System.env.ANDROID_HOME}";后返回null,这是因为Android Studio的默认行为是通过local.properties设置路径,而我特别希望找到一种与配置无关的方法。 - Combuster

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接