APT: ошибка: атрибут 'package' в теге не является допустимым именем пакета Java: 'com.mypackage.name_.app'

У меня есть приложение, которое я пытаюсь скомпилировать с исходным именем пакета, очень похожим на это: com.mypackage.name_.app'

До сих пор приложение компилировалось успешно, я перешел на новейшие версии Gradle и компилирую с API 24. Раньше я использовал старые версии Gradle и API 23.

Теперь, когда я пытаюсь скомпилировать это приложение, я получаю эту ошибку:

    APT: error: attribute 'package' in tag is not a valid Java package name: 'com.mypackage.name_.app'.
    .
    .
    Failed to execute aapt
    com.android.ide.common.process.ProcessException: Failed to execute aapt
    .
    .
    Caused by: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
    at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
    at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:482)
    at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
    at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:794)

Я обнаружил, что AAPT2 не допускает подчеркивания в конце части имени вашего пакета: Все мои проекты студии Android и все новые выдают ошибки из файла манифеста отладки Android.

Но что тогда произойдет, если вы ранее скомпилировали и выпустили в Google Play приложение с подчеркиванием в конце части имени вашего пакета? Например, я нашел этот пример: https://play.google.com/store/apps/details?id=com.mobincube.tarifas_taxi_.sc_35K1XV

Он выпущен в Google Play с частью имени пакета ".tarifas_taxi_.".

Как этот разработчик (и я) можем теперь скомпилировать наши приложения с подчеркиванием в этой позиции?

3
0
4 022
1

Ответы 1

AAPT2 не допускает имен пакетов, в которых «слова» заканчиваются или начинаются с символа подчеркивания.
Здесь для пакета "com.mypackage.name_.app" оскорбительное слово - "name_". Удалите символ подчеркивания или используйте "name_foo" (символы подчеркивания разрешены в середине слова), чтобы заставить это работать.
В трекере проблем есть открытая проблема, ее изучает владелец AAPT2.

Подробнее: https://issuetracker.google.com/68468089

Скорее всего, это будет помечено как «работает по назначению» или на исправление уйдет несколько месяцев, поэтому лучшим решением для вас будет изменить имя пакета, чтобы слова не заканчивались на «_».

Izabela Orlowska 19.03.2018 12:37

Другие вопросы по теме