Ошибка Proguard при экспорте подписанного приложения с использованием пакета совместимости сот android.support.v4.app - PullRequest
13 голосов
/ 03 июля 2011

Я использую пакет совместимости v4 в своем проекте, но когда я пытаюсь экспортировать подписанное приложение, я получаю следующее сообщение от Proguard. Я гуглил весь вечер, но не нашел ответа, чтобы решить эту проблему.

[2011-07-03 01:46:29 - worldscopeApp] Proguard returned with error code 1. See console
[2011-07-03 01:46:29 - worldscopeApp] Warning: android.support.v4.app.ActivityCompatHoneycomb: can't find referenced method 'void invalidateOptionsMenu()' in class android.app.Activity
[2011-07-03 01:46:29 - worldscopeApp] Warning: android.support.v4.app.ActivityCompatHoneycomb: can't find referenced method 'void dump(java.lang.String,java.io.FileDescriptor,java.io.PrintWriter,java.lang.String[])' in class android.app.Activity
[2011-07-03 01:46:29 - worldscopeApp] Warning: android.support.v4.view.MenuCompatHoneycomb: can't find referenced method 'void setShowAsAction(int)' in class android.view.MenuItem
[2011-07-03 01:46:29 - worldscopeApp]       You should check if you need to specify additional program jars.
[2011-07-03 01:46:29 - worldscopeApp] Warning: there were 3 unresolved references to program class members.
[2011-07-03 01:46:29 - worldscopeApp]          Your input classes appear to be inconsistent.
[2011-07-03 01:46:29 - worldscopeApp]          You may need to recompile them and try again.
[2011-07-03 01:46:29 - worldscopeApp]          Alternatively, you may have to specify the options 
[2011-07-03 01:46:29 - worldscopeApp]          '-dontskipnonpubliclibraryclasses' and/or
[2011-07-03 01:46:29 - worldscopeApp]          '-dontskipnonpubliclibraryclassmembers'.
[2011-07-03 01:46:29 - worldscopeApp] java.io.IOException: Please correct the above warnings first.
[2011-07-03 01:46:29 - worldscopeApp]   at proguard.Initializer.execute(Initializer.java:308)
[2011-07-03 01:46:29 - worldscopeApp]   at proguard.ProGuard.initialize(ProGuard.java:210)
[2011-07-03 01:46:29 - worldscopeApp]   at proguard.ProGuard.execute(ProGuard.java:85)
[2011-07-03 01:46:29 - worldscopeApp]   at proguard.ProGuard.main(ProGuard.java:499)

Ответы [ 3 ]

34 голосов
/ 07 июля 2011

Похоже, что некоторые предложения в android.support.v4 не совсем совместимы с некоторыми классами в android.Если вы уверены, что это не проблема, вы можете указать

-dontwarn android.support.v4.**

ProGuard будет игнорировать эти проблемы и продолжит обработку кода.

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

26 голосов
/ 07 июля 2011

Это то, что я использую в моем proguard.cfg:

-dontwarn **CompatHoneycomb
-keep public class * extends android.support.v4.app.Fragment

Более общим является:

-dontwarn **CompatHoneycomb
-keep class android.support.v4.** { *; }

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

0 голосов
/ 20 июля 2011

Вы должны установить для android: targetSdkVersion SDK> = honeycomb.

Для информации, я использую этот

<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="13"/>
...