Проект библиотеки Android: обфускация и сохранение ресурсов

Я хочу скомпилировать с Proguard мой проект Android с некоторыми дополнительными проектами библиотеки Android. Фактически, большая часть кода и ресурсов находится в этих библиотеках.

Я добавил строку "proguard.config = proguard.cfg" в project.properties основного проекта, я настроил cfg файл (-libraryjars..\libs). Затем - щелкните правой кнопкой мыши, Android Tools → Export Signed Application Package. ADT скомпилировал проект для выпуска, но приложение потерпело крах при первом запуске: поскольку я читал из журнала, это было из-за неправильного указателя ресурсов.

Я декомпилировал проект и обнаружил очень странную вещь: если я объявляю ресурс в библиотеке, то указатель ресурса на нем становится 0.

Проблема не исчезла, когда я добавляю строку "proguard.config = proguard.cfg" в project.properties всего моего проекта библиотеки Android.

Любые решения?

Изменить: посмотрите фрагмент proguard.cfg:

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !

-printusage unused.txt
-optimizationpasses 2
-printmapping mapping.txt
# -overloadaggressively
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-dump class_files.txt
-printseeds seeds.txt

-libraryjars ..\libs

Ответ 1

Вы уверены, что у вас есть новейшие инструменты? Как Eclipse Indigo, ADT v16.0.1 и proguard 4.7? У меня также были проблемы перед обновлением до последних инструментов.

Ответ 2

Как вы включаете/ссылаетесь на свои проекты в библиотеке Android? Если я прочитаю это правильно, вы добавите их в качестве банки? Если это так, у вас действительно могут возникнуть проблемы с ресурсами, предоставляемыми библиотечными проектами.

Если я прав, попробуйте следующее:

Используйте настройки проекта и добавьте туда свои проекты библиотек. Не используйте для этого некоторые экспортированные банки. Способ работы с библиотекой Android отличается от обычной библиотеки java.