Проект больше не собирается с Android Studio 3.2 - PullRequest
0 голосов
/ 29 сентября 2018

Я обновил свою андроид студию, а также обновил 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.

Также я проверил, что сборки проекта с использованием gradle 3.1.2 и чтокласс в загруженном кэше Gradle.

Ответы [ 3 ]

0 голосов
/ 10 октября 2018

Это начальный заполнитель для ответа - я понял, что конструктор изменился, и теперь у него есть 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) { ... }

, но я все еще не уверен, как создать 2-й и 3-йparams - любой вклад будет оценен.(Я знаю, что могу передать ноль вместо 3-го параметра, но знание того, как на самом деле его использовать, будет неплохо)

0 голосов
/ 18 октября 2018

Конструктор DefaultManifestParser был изменен, как отмечено Ноа Драч в ее ответе, поэтому вы должны указать в нем дополнительные параметры следующим образом.

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

Это сработало, надеюсь, это сработаети для тебя.

0 голосов
/ 07 октября 2018

Хотя это не совсем ответ, так как он не выяснил, ограничен ли DefaultManifestParser или нет.

Я использовал анализатор манифеста, чтобы получить versionName и versionCode из манифеста.Это была особенность моего базового проекта, и система сборки некоторое время жаловалась.

Чтобы перейти на версию 3.2, я изменил свою версию с

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

наследующий

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

Удаление versionName и versionCode, следующих из моего AndroidManifest

 <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">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...