Проблемы при компиляции Android-приложения с Ant и Proguard - PullRequest
0 голосов
/ 18 января 2012

У меня есть приложение для Android, которое состоит из разных модулей. Основной модуль использует некоторые библиотеки, такие как GSON от Google или v4.support.package. Собственный скрипт сборки с правильным proguard.cfg тоже соберет его. Теперь я должен интегрировать другую «Android-библиотеку», которая использует частично те же библиотеки (GSON support.v4). Помимо получения многих заметок, таких как

Примечание. Дублирующее определение класса программы [com.google.gson.Gson]

Я также получаю некоторые заметки, такие как

[proguard] Примечание. Com.google.gson.UnsafeAllocator: не удается найти динамически ссылающийся класс sun.misc.Unsafe

[proguard] Примечание: конфигурация относится к неизвестному классу 'sun.misc.Unsafe'

что я нахожу странным, потому что у меня есть некоторые «хранит» в моем Proguard.cfg специально для этого:

-keepattributes Подпись, Аннотация

- сохранить класс com.google.gson. ** {*;}

- класс удержания sun.misc.Unsafe {*; }

, который хорошо работает в моем проекте без ссылки на библиотеку модулей внутри него. Я нахожусь на Последнем SDK и Инструментах, и добавил пользовательский proguard.cfg в библиотеку модуля, которая хорошо работает на самом модуле lib (если сборка в автономном режиме). Мне кажется, что сборка не зависит от пользовательских proguard.cfg внутри библиотек-проектов. Любая идея о том, что попробовать высоко ценится

1 Ответ

0 голосов
/ 23 января 2012

Я наконец нашел решение для этого сам: с последними Android Tools (16) каждая Android-библиотека сначала компилируется. Таким образом, когда библиотека не имеет «стандартной» сборки и определяет какой-то пользовательский сценарий сборки, включая proguard --keeps, и этот --keeps определяется в том же проекте (за исключением классов Android SDK, поскольку они не скомпилированы), это приводит к ошибка proguard. Решение было сделать, удалить Proguard из библиотеки и скопировать --keeps внутри основного приложения

...