Proguard вернул ошибку с кодом ошибки 1 при подписании apk со многими внешними библиотеками

Я использую Eclipse для Mac. Когда я хочу экспортировать подписанный apk, я получаю сообщение «Proguard возвращен с кодом ошибки 1. См. консоль».

  • У меня есть эти 2 файла в корневой папке моего проекта: «proguard-android.txt» и «project.properties».
  • Внутри project.properties у меня есть:

    target=android-17 proguard.config=proguard-project.txt android.library.reference.1=../google-play-services_lib android.library.reference.2=../FacebookSDK

Среди многих других предупреждений, которые я получаю, когда пытаюсь создать подписанный apk, я получаю:

com.my.app.va.debug.ConfigureLog4j: can't find referenced class de.mindpipe.android.logging.log4j.LogConfigurator

com.my.app.va.debug.HockeyAppHelper: can't find referenced class net.hockeyapp.android.ExceptionHandler

Я уже поместил эти строки в "proguard-android.txt", но ошибки сохраняются:

-keep public class de.mindpipe.android.logging.**
-dontwarn de.mindpipe.android.logging.**
-keep public class net.hockeyapp.**
-dontwarn net.hockeyapp.**

Что я могу делать неправильно?

ОБНОВЛЕНИЕ: я изменил имя файла с "proguard-android.txt" на "proguard-project" и добавил его в свой Proguard, и сообщения об ошибках "ссылочный класс" исчезли:

-dontwarn de.mindpipe.android.**
-keep public class de.mindpipe.android.**

-dontwarn net.hockeyapp.android.**
-keep public class net.hockeyapp.android.**

Тем не менее... Это реальное решение? или я просто скрываю проблему?

Другие предупреждения по-прежнему сохраняются:

Warning: com.facebook.widget.UserSettingsFragment: can't find referenced method 'android.support.v4.app.FragmentActivity getActivity()' in class com.facebook.widget.UserSettingsFragment
Warning: there were 138 unresolved references to program class members.

person Josh    schedule 14.07.2015    source источник


Ответы (1)


Имя файла proguard должно быть определено в project.properties при использовании Eclipse или в build.gradle при использовании Gradle или Android Studio.

Обычно он содержит proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt.

Вы также должны включить следующее:

-keep class android.support.v4.app.** { *; } 
-keep interface android.support.v4.app.** { *; } 

Более официальная информация на http://developer.android.com/tools/help/proguard. HTML.

Некоторые другие соответствующие обсуждения stackoverflow: Как настроить мой файл proguard-project.txt, чтобы удалить только журналы и как автоматически генерировать файл proguard-android.txt?

person axic    schedule 14.07.2015