构建Android项目时出现gradle构建错误

时间:2018-07-15 16:34:13

标签: java gradle android-gradle build.gradle android-sdk-tools

我正在尝试使用以下命令在命令行上构建一个简单的android项目

    android create project

我正在遵循this教程,并使用android-sdk工具版本25.2.5(其中仍包含上述命令)。但是,我的gradle版本是4.8.1和Java 10.0.1。

首先,我进入我的项目文件夹,并使用android命令创建一个项目:

     android create project -p . -a MainActivity -k com.test.firstapp -t "android-22" -g -v 2.3.0

这给了我一个项目框架。我选择了基于this网页的android gradle插件版本2.3.0,希望它也支持所有新版本的gradle。

然后我尝试用

构建项目
    ./gradlew build

并得到我的第一个错误:

    FAILURE: Build failed with an exception.

    * What went wrong:
    Could not determine java version from '10.0.1'.

所以我认为我使用的gradle版本和gradle插件版本必须不匹配,因为gradle 4.8.1肯定应该支持Java 10.0.1。然后,我去查看了项目目录中的build.gradle文件,并将android插件版本更改为3.1.0,如下所示:

    classpath 'com.android.tools.build:gradle:3.1.0'

还将google()添加到存储库。我仍然遇到相同的Java版本错误。现在,我查看了gradle / wrapper / gradle-wrapper.properties,发现distributionUrl适用于gradle 1.12,因此我将其更改为实际版本:

    distributionUrl=http\://services.gradle.org/distributions/gradle-4.8.1-all.zip

更改包装器中的gradle版本后,我致电:

    gradle wrapper --gradle-version 4.8.1

根据here的建议。运行此命令,我首先得到警告和错误:

    Configure project :
    WARNING: The specified Android SDK Build Tools version (22.0.1)         
    is ignored, as it is below the minimum supported version (27.0.3) for Android Gradle Plugin 3.1.0.
    Android SDK Build Tools 27.0.3 will be used.
    To suppress this warning, remove "buildToolsVersion '22.0.1'" from your build.gradle file, as each version of the Android Gradle Plugin now has                 a default version of the build tools.
    File /home/user/.android/repositories.cfg could not be loaded.
    Checking the license for package Android SDK Build-Tools 27.0.3 in /opt/android-sdk/licenses
    License for package Android SDK Build-Tools 27.0.3 accepted.
    Preparing "Install Android SDK Build-Tools 27.0.3 (revision: 27.0.3)".
    Warning: Failed to read or create install properties file.
    Project evaluation failed including an error in afterEvaluate {}. Run with --stacktrace for details of the afterEvaluate {} error.
    FAILURE: Build failed with an exception.

    * Where:
    Build file '/home/user/dev/android/firstapp/build.gradle' line: 18

    * What went wrong:
    A problem occurred evaluating root project 'firstapp'.
    > Could not find method runProguard() for arguments [false] on BuildType_Decorated{name=release, debuggable=false, testCoverageEnabled=false, jniDebuggable=false, pseudoLocalesEnabled=false, renderscriptDebuggable=false, renderscriptOptimLevel=3, minifyEnabled=false, zipAlignEnabled=true, signingConfig=null, embedMicroApp=true, mBuildConfigFields={}, mResValues={}, mProguardFiles=[], mConsumerProguardFiles=[], mManifestPlaceholders={}} of type com.android.build.gradle.internal.dsl.BuildType.

我确定版本不匹配,但是如果我想继续使用android-sdk工具25.2.5,有人可以指出正确的组合吗?

我正在Ubuntu 16.04上执行此操作。

谢谢。

1 个答案:

答案 0 :(得分:1)

最后,对我有用的组合如下:

  • android sdk工具25.2.5

  • android构建工具26.0.2

  • 平台工具28.0.0(在任何情况下都是不重要的...)

  • java 8(实际上必须降级)

  • 等级4.8.1

  • android gradle插件3.0.1

通过这种组合,我能够使用“ android create project”创建项目并使用“ ./gradlew build”进行构建:

    > android create project -p . -a MainActivity -k com.test.firstapp -t "android-22" -g -v 3.0.1
    > Created directory ....

android工具仍然在build.gradle中创建了一些过时的输入,例如proguard而不是minifyEnabled,并省去了一些我需要找到更新的gradle插件版本的存储库(google(),jcenter())东西。另外,gradle-wrapper.properties窗台包含过时的gradle版本url,但是可以更改,如我最初的问题所示。即使不是很完美,我也比以前更容易通过命令行自动化项目创建。