无法更改构建工具版本来编译Android应用程序

时间:2015-02-25 15:48:38

标签: android android-studio android-gradle android-build android-multidex

我想使用构建工具21.1+编译一个Android应用程序,因为我需要使用multidex支持。我从SDK管理器安装了构建工具21.1.2。之后我更改了所有build.gradle文件以包含buildToolsVersion:

    android {
      ...
      buildToolsVersion "21.1.2"
      ...
    }

由于应用程序依赖于其他几个项目,因此有几个build.gradle文件,具有不同的版本和参数。

此外,还做了multidex所需的其他更改。在需要multidex的应用程序中,我修改了build.gradle,如下所示:

android {
  ...
  compileSdkVersion 21
  buildToolsVersion "21.1.2"

  defaultConfig {
    minSdkVersion 21
    targetSdkVersion 21

    // Enabling multidex support.
    multiDexEnabled true
  }
  ...
}

当然,将清单修改为。

问题在于,尽管进行了所有build.gradle修改,但项目似乎是使用19.1.0构建工具进行编译,因为当我删除它们时,我收到此错误:

> failed to find Build Tools revision 19.1.0

当我安装构建工具19时,项目在编译过程中更进一步,但它会获得各种不同的奇怪错误,具体取决于编译参数。如果我设置:

    minSdkVersion 15
    targetSdkVersion 21

在dex过程中,项目无法编译出奇怪的错误。 但如果我将两者都设置为v 21,则项目无法编译,因为它说它需要构建工具21.0+,我在build.gradle中明确要求。

由于项目最初是这样开发的,我使用的是gradle包装器(gradlew),而不是Android Studio内置的gradle。

注意,以下内容与bug的技术部分无关,但也许有助于理解它的上下文: 我正在尝试编译ros-android(android_core)库,但更新所有最新版本:gradle 2.3,android插件1.1.0,构建工具21.1.2,Google API 21,android studio 1.1.0。我们的想法是能够将最新的Google API与ros-android库结合使用。

1 个答案:

答案 0 :(得分:1)

这是一个棘手的问题。问题是buildtools没有按照我们的预期由build.gradle设置。相反,有另一个插件(rosjava android)调用gradle构建。问题是这个插件有构建工具版本"硬编码"所以如果不重新编译一切就不可能改变它们。

很高兴,图书馆的作者在最近几天更新了所有内容,包括buildtools版本和maven repo。所以问题现在已经消失了。