Как работает упаковка с Android App Bundle - PullRequest
0 голосов
/ 16 апреля 2020

Я столкнулся с проблемой при создании файла .aab для моего приложения. В мое приложение я включаю .aar файл библиотеки, которую я создал, чтобы разделить некоторые основные функции c между несколькими приложениями. Когда я пытаюсь сгенерировать пакет приложений Android для моего приложения, происходит сбой со следующей ошибкой.

 A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > File 'root/AndroidManifest.xml' uses reserved file or directory name 'AndroidManifest.xml'.

Генерация .apk работает нормально, однако.

После небольшого приближения, Я нашел решение, которое рекомендует добавить следующий блок в файл build.gradle моего приложения.

    packagingOptions {
        exclude 'AndroidManifest.xml'
    }

Это решение работает, но я не понимаю, почему это работает. Насколько я понимаю, exclude 'AndroidManifest.xml' исключит файл AndroidManifest из включения в файл .aab. Если это правда, то почему приложение по-прежнему работает нормально без файла AndroidManifest?

Я знал, что эта проблема связана с библиотекой, которую я использовал, поскольку, если я удалил эту библиотеку из своего приложения, я был смог сгенерировать .aab успешно без добавления exclude 'AndroidManifest.xml' в файл gradle моего приложения.

Поэтому я попытался переместить блок exclude 'AndroidManifest.xml' из моего приложения в библиотеку, заново сгенерировал файл .aar и добавил этот новый файл .aar в свое приложение. После этого, когда я попытался сгенерировать файл .aab, он тоже работал. Так что кажется, что не имеет значения, куда я добавляю exclude 'AndroidManifest.xml' (в библиотеке или в приложении). Оба дают одинаковый результат. Это очень смутило меня и вызвало немало вопросов.

  1. Что я делаю не так в своей библиотеке (.aar), из-за которой генерация файла .aab не удалась с File 'root/AndroidManifest.xml' uses reserved file or directory name 'AndroidManifest.xml'.?
  2. Почему добавление exclude 'AndroidManifest.xml' устраняет проблему? Не следует ли исключить файл AndroidManifest из приложения sh, поскольку у него не будет AndroidManifest?
  3. Почему добавление exclude 'AndroidManifest.xml' в приложение или библиотеку дает такой же эффект?

Я думаю, что моя путаница может возникнуть из-за недопонимания того, как Android Комплекты приложений работают. Но был бы очень признателен, если бы я мог получить ответы на вышеуказанные вопросы.

Спасибо.

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