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