2011-07-02 12 views
12

私のプロジェクトでv4互換パッケージを使用していますが、署名付きアプリケーションをエクスポートしようとするとProguardから次のメッセージが表示されます。私は一晩中グーグルグーグルをしましたが、私はこれを解決する答えを見つけませんでした。android.support.v4.appハニカム互換パッケージを使用して署名付きアプリケーションをエクスポートするときの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) 
+0

を使用していますhttp://stackoverflow.com/a/17988163/1318946 –

答えて

26

を:

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

より一般的には、次のとおりです。

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

しかし、APKサイズが大きくなるため、最初のAPKサイズが機能しない場合にのみ使用します。

+0

ありがとう! 2番目の解決法がその仕事をしました。 ところで、3番目のオプションは、プロジェクトビルドターゲットをAPIレベル11以上に変更することです。 – Goran

+0

私もこれが必要でした:-dontwarn android.support。** – Fraggle

34

android.support.v4のいくつかのクローズは、Androidの一部のクラスと互換性がないようです。これが問題ではないと確信できる場合は、

-dontwarn android.support.v4.** 

これらの問題を無視してコードの処理を続行します。

>トラブルシューティング>警告ProGuardのマニュアルを参照してください:これは私が私のproguard.cfgで使用しているものです参照フィールド/メソッドを見つけることができません

+2

** CompatHoneycombを使用することはなかったのに対し、これは、同様に私のために働きました。このソリューションは、Dianne Hackborn(https://plus.google.com/105051985738280261832/posts/K1tGvKG1NYv)の –

+0

でも紹介されています。これは、Android SDKに付属のproguard-android.txtとproguard-android-optimize.txtに追加されました。 –

0

android:targetSdkVersionをSDK> = honeycombに設定する必要があります。

情報については、私はこの1つ

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