2014-02-11 4 views
14

Сбой приложения после proguard (proguard, созданный Eclipse IDE).Сбой приложений для Android после proguard

LogCat StackTrace

W/SupportMenuInflater(13657): Cannot instantiate class: android.support.v7.widget.ShareActionProvider 
W/SupportMenuInflater(13657): java.lang.ClassNotFoundException: android.support.v7.widget.ShareActionProvider 
W/SupportMenuInflater(13657): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
E/AndroidRuntime(13657): FATAL EXCEPTION: main 
E/AndroidRuntime(13657): java.lang.NullPointerException 
E/AndroidRuntime(13657): at com.mypack.app.MainActivity.onCreateOptionsMenu(Unknown Source) 
E/AndroidRuntime(13657): at android.app.Activity.onCreatePanelMenu(Activity.java:2571)` 

версия по умолчанию proguard.cfg файла

`

EDIT: для решения проблемы необходимо добавить эти строки в proguard.cfg и не имеют ошибок. Новые строки говорят proguard игнорировать библиотеки android.support.

-dontwarn android.support.v4.** 
-keep class android.support.v4.** { *; } 
-dontwarn android.support.v7.** 
-keep class android.support.v7.** { *; } 
+0

Можете ли вы разместить proguard.cfg? – Niko

+0

это мой proguard-android.txt http://pastebin.com/icLNnUxM – John

+0

Извините, не могу получить доступ к pastebin из-за ограничения прокси, но ответ nateZor выглядит как первое, что нужно проверить в этом случае. – Niko

ответ

24

В вашем Proguard конфигурации, вы закомментировал пропитание класса, что он не может найти:

#-keep public class android.support.v7.widget.ShareActionProvider 

Пробовали ли вы раскомментировать, что и здание снова?

EDIT: так что не решить вашу проблему, возможно, попробуйте поймать все описанное здесь:

Android Proguard configuration for the v7 Support Library ActionBar

специально, попробуйте добавить:

-keep class android.support.v7.internal.** { *; } 
-keep interface android.support.v7.internal.** { *; } 
-keep class android.support.v7.** { *; } 
-keep interface android.support.v7.** { *; } 

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

+0

Я попытался раскомментировать эту строку, но та же проблема появляется – John

+0

ОК, я отредактировал с новым предложением. Надеюсь, это сработает для вас. – natez0r

+0

спасибо, проблема была решена, я добавил решение в исходное сообщение, просто проигнорировал библиотеки поддержки от proguard – John

Смежные вопросы