2014-01-14 12 views
25

私はアンドロイドスタジオを使ってデバッグとリリースアプリケーションをビルドしています。 私は、デバッグ/リリースアプリケーションProGuardで-dontwarnを使用するには?

./gradlew assembleDebug 

./gradlew assembleRelease 

を構築する場合、両方のビルドが完全に作成し、同様に実行されます。デバッグのために適切なダイアログボックスを表示したりbuild.gradleに

今私が追加したProGuardの詳細をリリース:

signingConfigs { 
    myConfig { 
      storeFile file("keystore.jks") 
      storePassword "abc123!" 
      keyAlias "androidreleasekey" 
      keyPassword "pqrs123!" 
    } 
} 

buildTypes { 
    release { 
     runProguard true 
     proguardFile getDefaultProguardFile('proguard-android-optimize.txt') 
     signingConfig signingConfigs.myConfig 
    } 
} 
productFlavors { 
    defaultFlavor { 
     proguardFile 'proguard-rules.txt' 
    } 
} 

今では

としてイベントログにエラー

警告を示しています。未解決の7がありましたクラスまたはインタフェースへの参照 不足しているライブラリのjarファイルを追加したり、バージョンを更新する必要があります。 クラスがなくてもコードが正常に動作する場合は、 の警告を '-dontwarn'オプションで抑制することができます。 (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass

警告:プログラムクラスメンバーには2つの未解決の参照がありました。 入力クラスが矛盾しているようです。 コードを再コンパイルする必要があります。

http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember) :フラッシュセールス:私は、falseにrunProguardオプションの実行を有効にした場合proguardDefaultFlavorReleaseが

に失敗しました。

1)それは偽runProguard =でAPKを解放するためにokです:

私はこれらの質問がありますか?

2)リリースビルドの作成中にdontwarnを使用するにはどうすればよいですか?

+0

は完全な誤りがログインしますか?実際の7 + 2の未解決の参照を省略したようです。 '-dontwarn'の使用は非常に簡単です。これは例です:http://stackoverflow.com/questions/6974231/proguard-hell-cant-find-referenced-class – Jonik

+1

あなたの質問1)に関しては、(Google Playなどへの)実際のリリースビルドについては、 ProGuardを使用してください。 (ただし、あなたのアプリがリバースエンジニアリングしやすいと気にしないなら、必須ではありません。)ProGuardを使い、あなたが得ているエラーを解決することを学ぶのに1時間から2時間かかることは間違いありません。 – Jonik

+0

迅速な対応をありがとう。 dontwarnをproguard-rules.txtに追加すると、 ビルドが正常に作成されました。 jcifs.http.NetworkExplorer:jcifs.http:スーパークラスまたはインタフェースjavax.servlet.http.HttpServlet 警告を見つけることができません は、今私は は、私が 警告として参照警告を得ていたもう一つ質問があります。NtlmHttpFilter:私は 方法1を使用する場合、スーパークラスやインターフェイスは、javax.servlet.Filter を見つけることができません:。-dontwarnのjavax.servletを** またはこの 方法2:-dontwarn jcifs.http ** ビルドが正常に完了しました。 どちらの方が優先されるべきですか?この2つの違いは何ですか? – morya

答えて

23

プロジェクトに新しいlibを追加する一般的に、これはどのように私がプロガードを定義する必要がありますか。

私はTwitter4Jのlibを使用しているとしましょう私はこのようにdontwarnを追加します。

-keep class twitter4j。​​* {*; }

-dontwarnのtwitter4j。​​*

+0

「未解決の参照」という警告は、Proguardがクラスを削除したかどうかを示していますか?私はそれらをフィルタリングしてはいけませんか? –

+3

どこにこれを正確に追加しますか? – jonney

+0

@jonney [** this **](http://stackoverflow.com/questions/4732656/enabling-proguard-in-eclipse-for-android)の投稿をご確認ください。 – swiftBoy

関連する問題