项目不再使用android studio 3.2构建

时间:2018-09-29 19:17:24

标签: android android-studio gradle

我已经更新了我的android studio,还将gradle更新到了3.2.0。不幸的是,当我尝试构建项目时,遇到以下问题。

在build.gradle中

import com.android.builder.core.DefaultManifestParser

变为红色(在生成器处),并且

new DefaultManifestParser(android.sourceSets.main.manifest.srcFile)

获取could not find matching constructor for: com.android.builder.core.DefaultManifestParser(java.io.File)

还原到较早的gradle可以解决此问题,并且我已删除.gradle缓存。

我还验证了使用3.1.2 gradle构建的项目,并且下载的gradle缓存中有一个类。

3 个答案:

答案 0 :(得分:2)

Default Noa Drach在其答案中指出,DefaultManifestParser的构造函数已更改,因此您必须像这样在其中提供其他参数。

def manifestParser = new DefaultManifestParser(android.sourceSets.main.manifest.srcFile, new BooleanSupplier() {
            @Override
            boolean getAsBoolean() {
                return true
            }
        }, null)

它对我有用,希望它也对您有用。

答案 1 :(得分:1)

这是答案的初始占位符-我发现构造函数已更改,现在有2个其他参数 /** * Builds instance of the parser, and parses the supplied file. The manifest is lazily parsed * and should typically only be parsed during the execution phase. * * @param manifestFile manifest to be parsed. * @param canParseManifest whether the manifest can currently be parsed. * @param issueReporter EvalIssueReporter */ public DefaultManifestParser( @NonNull File manifestFile, @NonNull BooleanSupplier canParseManifest, @Nullable EvalIssueReporter issueReporter) { ... }

但是我仍然不确定如何产生第二和第三参数-任何输入将不胜感激。 (我知道我可以传递null而不是第三个参数,但是知道如何实际使用它会很好)

答案 2 :(得分:0)

尽管不是一个很好的答案,因为它没有发现DefaultManifestParser是否被描述。

我正在使用清单分析器从清单中获取versionNameversionCode。这是我基础项目的功能,构建系统一直抱怨了一段时间。

为了升级到3.2 gradle,我从

更改了版本
 defaultConfig {
    ...
    def manifestParser = new DefaultManifestParser(android.sourceSets.main.manifest.srcFile)
    versionName = manifestParser.getVersionName()
    versionCode = manifestParser.getVersionCode()
    ...
 }

至以下

defaultConfig {
    ...
    versionName = "1.1.1.0"
    versionCode = 12
}

从我的AndroidManifest中删除versionName和versionCode

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="12"
    android:versionName="1.1.1.0">

给我....

 <manifest xmlns:android="http://schemas.android.com/apk/res/android">