Не дубликат
Я прочитал много разных SO-сообщений с "похожими" проблемами, но до сих пор ничего не решило мою проблему:
Похоже, что этот конкретный шаг (mergeDebugResources) может неожиданно провалиться сотнями разных способов, и никогда выдает полезное сообщение об ошибке.В лучшем случае он ничего не говорит, а в худшем - вводит в заблуждение информацию, которая отправляет вас в неправильном направлении, пытаясь отладить ваши проблемы.
Что я делаю
Я пишу небольшуюобертка вокруг ExoPlayer.Моя оболочка предоставляет пользовательский вид со свойствами, которые передаются непосредственно в ExoPlayer PlayerView
.Файл attrs.xml
для моего пользовательского представления выглядит следующим образом:
<resources>
<declare-styleable name="BFPlayer">
<!-- PlayerView attributes -->
<!-- I wish these were camelCase and not snake_case, but c'est la vie -->
<attr name="use_artwork" format="boolean" />
<attr name="default_artwork" format="reference" />
<attr name="use_controller" format="boolean" />
<attr name="hide_on_touch" format="boolean" />
<attr name="auto_show" format="boolean" />
<attr name="hide_during_ads" format="boolean" />
<attr name="show_buffering" format="enum">
<enum name="never" value="0" />
<enum name="when_playing" value="1" />
<enum name="always" value="2" />
</attr>
<attr name="resize_mode" format="enum">
<enum name="fit" value="0" />
<enum name="fixed_width" value="1" />
<enum name="fixed_height" value="2" />
<enum name="fill" value="3" />
<enum name="zoom" value="4" />
</attr>
<attr name="surface_type" format="enum">
<enum name="none" value="0" />
<enum name="surface_view" value="1" />
<enum name="texture_view" value="2" />
<enum name="spherical_view" value="3" />
</attr>
<attr name="shutter_background_color" format="color" />
<attr name="keep_content_on_player_reset" format="boolean" />
<attr name="player_layout_id" format="reference" />
<attr name="controller_layout_id" format="reference" />
<!-- BFPlayer attributes -->
<!-- snake_case to match ExoPlayer attributes -->
<attr name="video_src" format="string" />
</declare-styleable>
</resources>
Что происходит
При попытке создать проект я получаю следующую ошибку:
* What went wrong:
Execution failed for task ':app:mergeDebugResources'.
> 1 exception was raised by workers:
com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource compilation failed
/Users/stevenbarnett/.gradle/caches/transforms-2/files-2.1/906c495794baffdd076b02fc420f6298/res/values/values.xml:726:5-730:25: AAPT: error: duplicate value for resource 'attr/resize_mode' with config ''.
/Users/stevenbarnett/.gradle/caches/transforms-2/files-2.1/906c495794baffdd076b02fc420f6298/res/values/values.xml:726:5-730:25: AAPT: error: resource previously defined here.
/Users/stevenbarnett/.gradle/caches/transforms-2/files-2.1/906c495794baffdd076b02fc420f6298/res/values/values.xml:726:5-730:25: AAPT: error: duplicate value for resource 'attr/surface_type' with config ''.
/Users/stevenbarnett/.gradle/caches/transforms-2/files-2.1/906c495794baffdd076b02fc420f6298/res/values/values.xml:726:5-730:25: AAPT: error: resource previously defined here.
/Users/stevenbarnett/.gradle/caches/transforms-2/files-2.1/1694e02eca6cc0cfe670672c5973bd19/res/values/values.xml:32:5-36:373: AAPT: error: duplicate value for resource 'attr/show_buffering' with config ''.
/Users/stevenbarnett/.gradle/caches/transforms-2/files-2.1/1694e02eca6cc0cfe670672c5973bd19/res/values/values.xml:32:5-36:373: AAPT: error: resource previously defined here.
/Users/stevenbarnett/Source/BluePlayer/AndroidSDK/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml: error: file failed to compile.
Обратите внимание, что он запрашивает значение, определенное в values.xml
от строки 726 столбца 5 до строки 730, столбец 25 «был ранее определен» в values.xml
от строки 726 столбца 5 до строки 730 столбца 25. Он буквально видит то же объявление!
Я пробовал:
- Очистка моего проекта
- Аннулирование кэшей и перезапуск
- Удаление моего
~/.gradle
каталога - Переустановка Android Studio
- Понижение версии плагина Gradle Android (с
3.4.0
до 3.0.0
) - Обновление плагина Gradle Android (с
3.4.0
до 3.5.0-beta1
)
Я нахожусь на Mac OS X (поэтому любые проблемы, связанные с Windows, не имеют значения)
Я на 64-битной машине, использую 64-битные инструменты сборки
Iуспешно построили этот проект и многие другие ранее.Проблема не возникала, пока я не попытался создать этот файл attrs.xml
.Только атрибуты enum
выдают ошибку.Удаление или переименование этих атрибутов позволяет собирать проект, однако это имена, ожидаемые от ExoPlayer PlayerView
, и поэтому я не могу их изменить