Crashlytics не удалось найти манифест при обновлении build: gradle до 3.3.0 - PullRequest
0 голосов
/ 02 февраля 2019

Я использую сбои ткани в своем приложении, и она прекрасно работает, когда com.android.tools.build:gradle равен 3.2.1, пока я не обновлю его до 3.3.0.

Теперь я встречаю 'Crashlyticsне удалось найти манифест ', и обнаружил, что в сборке не было создано AndroidManifest.xml, созданного в / buildates / merged_manifest /.../Я прочитал это это и это , но не решил мою проблему.Как мне это исправить?Спасибо.

Вот библиотека lib.gradle

apply plugin: 'com.android.library'
buildscript {
    repositories {
        mavenCentral()
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'io.fabric'
repositories {
    maven { url 'https://maven.fabric.io/public' }
    ...
}

dependencies {
    ...
    api('com.crashlytics.sdk.android:crashlytics:2.9.8@aar') {
        transitive = true
    }
}

А вот проект gradle

buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0'
        ...
    }
}

И это ошибка: enter image description here

Ответы [ 2 ]

0 голосов
/ 18 апреля 2019

У меня есть исправление, сохраняющее зависимости Crashlytics от модуля приложения, но оно очень хакерское.

Из того, что я могу сказать, плагин io.fabric существует в основном для генерации идентификатора сборки дляcrashlytics, что важно для платформы Fabric, но не используется для Firebase.Это, я полагаю, рудиментарная функциональность, которая в конечном итоге будет удалена, когда Crashlytics завершит миграцию на Firebase, но в то же время это совершенно необходимо просто потому, что Crashlytics проверяет его и вылетает из приложения, если его там нет.

Я просто создал бесполезный фиктивный идентификатор сборки и удалил все упоминания о плагине ui.fabric из моих модулей, и это работает!Мой код компилируется и сообщает о сбоях в консоль Firebase, как и раньше, и я могу без проблем обновиться до плагина Android Gradle v3.3.0 +.


Я предпринял следующие конкретные шаги:

Добавьте это в файл main / res / values.xml в модуле, который использует аварийные сбои:

<string name="com.crashlytics.android.build_id" translatable="false">RANDOM_UUID</string>

И удалите все случаи использования подключаемого модуля io.fabric, кака также зависимость classpath от подключаемого модуля Gradle (поскольку вы его больше не используете).


Обратите внимание, что, как я уже сказал, это очень хакерский.Я бы посоветовал тщательно протестировать это, если вы воспользуетесь этим подходом для своего проекта.Может существовать некоторая функциональность, которая все еще использует идентификатор сборки, и это может привести к ее поломке.

РЕДАКТИРОВАТЬ: после дальнейшего изучения я считаю, что это предотвратит загрузку файла сопоставления из-за сбоев, что означает, что у вас будетвручную деобфусцировать следы стека.По крайней мере, это еще вариант, но, похоже, он имеет недостатки.Также стоит отметить, что вы также можете просто использовать:

<string name="com.crashlytics.RequireBuildId">false</string>

вместо предоставления фиктивного ID сборки.

0 голосов
/ 13 февраля 2019

Вы пытались настроить все точно так, как требуется для установки Crashlytics с модулем библиотеки и базовым проектом?Кажется, новый плагин Gradle не работает, если настройка отличается от рекомендуемой здесь .

Для меня удаление "apply plugin: 'io.fabric'" из файла build.gradle библиотеки (но оставление его в приложении build.gradle) решило эту ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...