在 gradle 任务中获取 Android SDK 目录

Com*_*ter 2 android android-gradle-plugin

最近android的gradle插件更新了(用android studio),之后之前进入sdk目录的方式就失效了。表达方式

${android.plugin.sdkDirectory}
Run Code Online (Sandbox Code Playgroud)

在旧版本中工作的现在返回错误

Error:(42, 0) No such property: sdkDirectory for class: com.android.build.gradle.LibraryPlugin
Run Code Online (Sandbox Code Playgroud)

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

Com*_*ter 5

由于之前的所有答案都取决于环境或在正常配置之上的特定用户干预,因此我将发布我在技术上凌乱的修复程序。

if (android.hasProperty('plugin')) {
    if (android.plugin.hasProperty('sdkHandler')) {
        androidPath = android.plugin.sdkHandler.sdkFolder
    } else {
        androidPath = android.plugin.sdkDirectory
    }
} else {
    androidPath = android.sdkDirectory
}
Run Code Online (Sandbox Code Playgroud)

与以前的所有方法不同,这确实有效,但看起来仍然很笨拙。