Я столкнулся с проблемой при создании файла .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'
(в библиотеке или в приложении). Оба дают одинаковый результат. Это очень смутило меня и вызвало немало вопросов.
- Что я делаю не так в своей библиотеке (.aar), из-за которой генерация файла
.aab
не удалась с File 'root/AndroidManifest.xml' uses reserved file or directory name 'AndroidManifest.xml'.
? - Почему добавление
exclude 'AndroidManifest.xml'
устраняет проблему? Не следует ли исключить файл AndroidManifest из приложения sh, поскольку у него не будет AndroidManifest? - Почему добавление
exclude 'AndroidManifest.xml'
в приложение или библиотеку дает такой же эффект?
Я думаю, что моя путаница может возникнуть из-за недопонимания того, как Android Комплекты приложений работают. Но был бы очень признателен, если бы я мог получить ответы на вышеуказанные вопросы.
Спасибо.