Похоже, Proguard не пытается избежать конфликтов имен с классами в библиотечных JAR-файлах при переименовании / переупаковке классов. Это правильно, или я просто неправильно настроил его?
Я запутываю приложение Android, которое использует последнюю версию Google AdMob SDK. Раньше я без проблем использовал старый AdMob SDK. Новый файл SDK JAR содержит некоторые классы, которые были запутаны. Один из этих классов - a.class
в пакете по умолчанию / без названия. Когда я запутываю свое приложение, Proguard переименовывает / переупаковывает один из моих классов, чтобы он также был a.class
в безымянном пакете, несмотря на то, что он прочитал в AdMob JAR как библиотечный JAR (поэтому он должен знать, что это вызовет конфликт). Как и ожидалось, моя сборка завершится неудачно, когда инструмент dx
попытается объединить эти два класса с одинаковыми именами в один файл .dex.
В качестве обходного пути я перенастроил Proguard так, чтобы он перемещал все мои классы в один. именованный пакет (всего одна буква), чтобы избежать конфликтов с классами Google, но мне интересно узнать, есть ли лучшее решение или это ограничение текущей версии (4.6) Proguard?