Подтвердить что ты не робот

Настройка ProGuard с проектами библиотеки Android

Я пытаюсь настроить proguard для моего Android-проекта. Мой проект приложения имеет очень мало кода в нем, но ссылается на проект библиотеки, который имеет подавляющее большинство кода и любые другие внешние банки. Это, как говорится, я не уверен, как настроить proguard, чтобы принять это во внимание. Прямо сейчас мой конфигурационный файл proguard - это только пример Android от сайта ProGuard. Я искал вокруг, но не нашел много или какой-либо документации по использованию proguard с библиотечными проектами, просто баночками. Я новичок в proguard, поэтому любой толчок в правильном направлении был бы замечательным. Спасибо.

4b9b3361

Ответ 1

Edit

Как отмечает @BornToCode, другой ответ (первоначально размещенный здесь) лучше объясняет, как обрабатываются проекты библиотеки Proguard. Кроме того, этот ссылочный вопрос имеет больший интерес и более общую репутацию, чем тот, который связан в моем первоначальном ответе. Цитата:

Библиотечные проекты сами по себе не запускают ProGuard, поэтому они не используют любая конфигурация.

Проекты приложений обфускают всю базу кода, включая любые библиотек, поэтому они нуждаются в надлежащей конфигурации для код приложения и код библиотеки.


Старый ответ (не ошибаюсь, возможно, не самый лучший подход)

Библиотечные проекты - это более удобный способ связывания проекта с его банкой в ​​Eclipse. Когда вы строите проект, единственным компонентом проекта библиотеки, который является видимым для вашего компилятора, является файл jar.

Если вы хотите обфускать эту банку, ознакомьтесь с этим сообщением:

Как обфускать библиотеку Android (файл .jar) с помощью Proguard в Eclipse

Ответ 2

Для меня имеет смысл указывать параметры proguard для библиотеки (например, какие файлы библиотеки не должны быть обфускации) в проекте библиотеки. Я обнаружил, что мне также необходимо включить конфигурации proguard из моих модулей библиотеки в мое приложение. Чтобы сделать это, я добавил следующее в раздел defaultConfig в моей библиотеке build.gradle

consumerProguardFiles 'proguard-rules.pro'

а затем настроил файл proguard-rules.pro в моем библиотечном модуле, чтобы сохранить имена важных сериализованных классов.

См. также consumerProguardFiles gradle ссылка