Запуск ProGuard с библиотекой AQuery

Я пытаюсь настроить Proguard, но не могу заставить его работать.

Это ошибка: введите здесь описание изображения

Я пробовал такие вещи, как:

-keep class com.android.auth.TwitterHandle.** { *; }
-keep class oauth.** { *; }

Без всякого везения.

В любом случае, я не думаю, что игнорирование — это ответ. Потому что это может означать, что что-то сломано.

Какие-нибудь советы?

Спасибо!


person Reinherd    schedule 13.02.2014    source источник


Ответы (5)


Предупреждения указывают на то, что библиотека AndroidQuery зависит от библиотеки OAuth. Судя по всему, вы используете первую библиотеку в своем проекте, а вторая отсутствует. Вы можете добавить отсутствующую библиотеку, но если ваше приложение работает нормально без нее в режиме отладки, вы можете просто указать ProGuard игнорировать отсутствующую зависимость. В этом случае:

-dontwarn com.androidquery.auth.**

или, с тем же эффектом:

-dontwarn oauth.signpost.**

См. руководство ProGuard > Устранение неполадок > Предупреждение: не удается найти указанный класс

(Я разработчик ProGuard)

person Eric Lafortune    schedule 22.02.2014

Добавьте эти строки в ваш файл proguard.

-dontwarn oauth.**
-dontwarn com.android.auth.TwitterHandle.**

-keep class oauth.** { *; }
-keep class com.android.auth.TwitterHandle.** { *; }

Изменить:

В любом случае, я не думаю, что игнорирование — это ответ. Потому что это может означать, что что-то сломано.

Если вы хотите использовать Proguard и у вас есть некоторые ошибки, такие как класс не найден, вы должны отключить/игнорировать их обфускацию. Потому что Proguard переименовывает имена, поля и методы классов при обфускации. Это становится большой проблемой, если для этих классов используется отражение. Таким образом, вы должны сказать proguard, чтобы игнорировать (не запутывать) некоторые классы, чтобы предотвратить эту проблему.

person Devrim    schedule 21.02.2014

Пожалуйста, попробуйте этот пост https://stackoverflow.com/a/15477898/1665964

Вставьте, чтобы пропустить запутанные в ProGuard ваши библиотеки, банки, классы и подклассы с этим примером

-optimizationpasses 5
-dump class_files.txt
-printseeds seeds.txt
-printusage unused.txt
-printmapping mapping.txt
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-allowaccessmodification
-repackageclasses ''

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.MapActivity
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider

-libraryjars  libs/commons-io-2.2.jar
-libraryjars  libs/gson-2.2.2.jar
-keep public class org.apache.commons.io.**
-keep public class com.google.gson.**
-keep public class com.google.gson.** {public private protected *;}

##---------------Begin: proguard configuration for Gson ----------
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.mypackage.ActivityMonitor.ClassMultiPoints.** { *; }
-keep public class com.mypackage.ActivityMonitor$ClassMultiPoints     { public protected *; }
-keep public class com.mypackage.ActivityMonitor$ClassMultiPoints$ClassPoints { public protected *; }
-keep public class com.mypackage.ActivityMonitor$ClassMultiPoints$ClassPoints$ClassPoint { public protected *; }
##---------------End: proguard configuration for Gson ----------
person Tapa Save    schedule 20.02.2014

Причина ошибки должна заключаться в том, что вы можете использовать внешний файл jar (в папке libs).

Если это так, добавление следующей строки перед строками -keep class ... должно решить вашу проблему.

-libraryjars libs/<jar_filename>

person Manas Chaudhari    schedule 21.02.2014

Если вы не знакомы с инструментом proguard cmd, вы можете попробовать графический интерфейс proguard, расположенный в tools/proguard/lib/proguardgui вашей папке Android SDK.

откройте proguardgui и загрузите файл конфигурации.

затем в разделе «Ввод/вывод» добавьте свою банку ввода и вывода, а также добавьте свою библиотеку Android, используемую в вашем проекте. добавить ваши библиотеки***** ваша основная проблема в том, что вы не добавили свою библиотеку (Aquery.jar и другие ) jar, который используется в вашем проекте, поэтому proguard не может найти нужные классы.***

person Adhikari Bishwash    schedule 24.02.2014