Згідно з поясненням Ксав'єра Дуроше на G + , це пов'язано з тим, що одна з бібліотек, яку ви використовуєте, має свою власну ic_launcher.png
- чого вони, звичайно, не повинні (докладніше про це внизу).
Швидше за все, дві іконки, згадані в журналі, різні: одна ваша, а інша, швидше за все, загальна піктограма андроїда, яку хтось забув видалити з бібліотеки.
Щоб побачити порушувальну залежність, натисніть Ctrl + Shift + N
двічі (для відповідності непроекту) та введіть ic_launcher.png
(див. Останній рядок на скріншоті)
Щоб тимчасово обійти проблему , додайте -v4
кваліфікатор до своїх папок із ресурсами, які можна малювати (або перейдіть просто ic_launcher.png
до, *dpi-v4
якщо у вас є причини) - кредити Ксав'є Дюрошету за рішення. Ви також можете просто перейменувати свою піктограму в щось інше і внести відповідні зміни вAndroidManifest.xml
Справжня проблема полягає в тому, що ображаюча бібліотека містить марні значки. Бібліотеки, які мають власні ресурси (наприклад, ActionBarSherlock або власну бібліотеку Support v7), використовують відмінні схеми імен, щоб уникнути зіткнень з іменами ваших ресурсів ( abs_
, abc_
).
Піктограми панелі запуску не знаходяться в бібліотеці, тому я закликаю вас повідомити автора бібліотеки, яку ви використовуєте, про те, що він забув видалити зайві ic_launcher.png
файли.
Також варто згадати , як Баррі Керролл дуже точно зазначив у тій самій дискусії , це не означає, що ваші ресурси ніколи не повинні перекривати ресурси в бібліотеці: є безліч законних причин перевизначити ресурси бібліотеки своїми (наприклад, зміна зовнішнього вигляду наданої бібліотекою діяльності) та логіка злиття ресурсів плагіна gradle дійсно це дозволяє.
Просто в цьому конкретному випадку конфлікт виникає, коли lib відстає у версії плагіна android gradle (до 1.2.2), у цьому випадку ресурси потрапляють у дві різні *dpi
папки - з і без -v4
кваліфікатора; але вони насправді знаходяться в одному "відрі" ресурсу, тому система вважає їх дублікатами.
Ця помилка виявляє марну ic_launcher.png
перевизначення (насправді, зіткнення - через помилку), але ця ситуація не є загально поганою для інших видів ресурсів.
Тобто іноді ви навмисно перевизначаєте ресурс бібліотеки, і ця помилка все одно спричинить появу повідомлення про помилку. Цього разу реальних проблем з іменами ресурсів немає, тому тимчасове рішення вище або стримування версії плагіна - це шлях.