2017-08-31 3 views
0

私は私のプロジェクトでproguardのルールの書き方は?

私のデフォルトのProGuardの設定をProGuardのの実装を行う必要がありましたが、この

android { 
.../// 

buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 

....//// 
} 

のようだったそれから私は私のproguard-ruler.proファイルがあり

android { 
.../// 

release { 
     shrinkResources true 
     minifyEnabled true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 

....//// 
} 

いくつかの小さな変更を加えhttps://ideone.com/ccPvPv

# Add project specific ProGuard rules here. 
# By default, the flags in this file are appended to flags specified 
# in /Users/Shahar/Library/Android/sdk/tools/proguard/proguard-android.txt 
# You can edit the include path and order by changing the proguardFiles 
# directive in build.gradle. 
# 
# For more details, see 
# http://developer.android.com/guide/developing/tools/proguard.html 

# Add any project specific keep options here: 

# If your project uses WebView with JS, uncomment the following 
#and specify the fully qualified class name to the JavaScript interface 
# class: 
#-keepclassmembers class fqcn.of.javascript.interface.for.webview { 
# public *; 
#} 

# Uncomment this to preserve the line number information for 
# debugging stack traces. 
#-keepattributes SourceFile,LineNumberTable 

# If you keep the line number information, uncomment this to 
# hide the original source file name. 
#-renamesourcefileattribute SourceFile 

#If you not sure about proguard process so uncomment next line 
#-dontobfuscate 

# view res/layout/design_layout_snackbar_include.xml #generated:18 
#-keep class android.support.design.internal.SnackbarContentLayout { <init> 
(...); } 

# view res/layout/activity_main.xml #generated:11 
#-keep class android.support.design.widget.AppBarLayout { <init>(...); } 

# view AndroidManifest.xml #generated:19 
#-keep class ru.jollydroid.athdemo.MainActivity { <init>(...); } 

# 

# Proguard configuration for Jackson 2.x (fasterxml package instead of 
codehaus package) 
#-keep class com.fasterxml.jackson.databind.ObjectMapper { 
# public <methods>; 
# protected <methods>; 
#} 
#-keep class com.fasterxml.jackson.databind.ObjectWriter { 
# public ** writeValueAsString(**); 
#} 
#-keepnames class com.fasterxml.jackson.** { *; } 


#----------------- 
#-keepnames com.fasterxml.jackson.databind.** { *; } 
# 
#-keepnames com.squareup.okhttp.** { *; } 
# 
#-keepnames cryptix.util.test.** { *; } 
# 
#-keepnames jp.wasabeef.recyclerview.animators.** { *; } 
# 
#-keepnames cryptix.util.gui.** { *; } 
# 
#-keepnames ui.activities.** { *; } 
# 
#-keepnames ui.adapters.** { *; } 
# 
#-keepnames ui.fragments.** { *; } 
# 
#-keepnames webServices.controllers.** { *; } 
#------------------------- 

#Was worked 
#----------------- 
#-dontwarn com.fasterxml.jackson.databind.** 
# 
#-dontwarn com.squareup.okhttp.** 
# 
#-dontwarn cryptix.util.test.** 
# 
#-dontwarn jp.wasabeef.recyclerview.animators.** 
# 
#-dontwarn cryptix.util.gui.** 
# 
# -dontwarn ui.activities.** 
# 
#-dontwarn ui.adapters.** 
# 
#-dontwarn ui.fragments.** 
# 
#-dontwarn webServices.controllers.** 
#------------------------- 

#-dontwarn java.awt.** 
#-dontwarn java.beans.Beans 
#-dontwarn javax.security.** 
#-keep class javamail.** {*;} 
#-keep class javax.mail.** {*;} 
#-keep class javax.activation.** {*;} 
#-keep class com.sun.mail.dsn.** {*;} 
#-keep class com.sun.mail.handlers.** {*;} 
#-keep class com.sun.mail.smtp.** {*;} 
#-keep class com.sun.mail.util.** {*;} 
#-keep class mailcap.** {*;} 
#-keep class mimetypes.** {*;} 
#-keep class myjava.awt.datatransfer.** {*;} 
#-keep class org.apache.harmony.awt.** {*;} 
#-keep class org.apache.harmony.misc.** {*;} 

# Proguard configuration for Jackson 2.x (fasterxml package instead of 
codehaus 
package) 


#-keep class com.fasterxml.jackson.annotation.** { *; } 
# 
#-dontwarn com.fasterxml.jackson.databind.** 
# 
#-keepclassmembers class com.myapp.models.** { *; } 
# 
#-keepattributes SourceFile,LineNumberTable 
#-keep class com.parse.*{ *; } 
#-keep class android.content.res.Xm.ResourceParser.** { *; } 
#-keep class com.googlecode.** { *; } 
#-dontwarn com.parse.** 
#-dontwarn com.squareup.picasso.** 
#-keepclasseswithmembernames class * { 
# native <methods>; 
#} 

libsのルールを作るのに多くの方法を試しましたが、うまくいきません。

リリースモードでbuild apkを作成しようとすると出力が出ます。だから、私の知る限り、私は外部LIBSのためのルールを追加する必要があるので、私はこの問題を取得理解し

https://ideone.com/Lg8tOT

私は、このリソースに

https://github.com/krschultz/android-proguard-snippets

を見ましたが、それは私がProGuardの中に強くはないですので、私はこのルールを追加する方法を私にしてください教えて...

私を助けていないのですか?

私が正しく理解していれば、自分のカスタムルールを書く必要がありますが、それを行う方法は?

事前に

おかげで気軽に

EDITは

メイクは

buildTypes { 
release { 
    minifyEnabled true 
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 
'proguard-rules.pro' 
} 
} 

マイのようなhttps://gist.github.com/albinmathew/c4436f8371c9c41461ab

今Gradleのルックスを変更します今

https://ideone.com/JhCE3o

答えて

0

理由と方法はわかりませんが、下のコードは私にとっては完璧に機能します。

ので、私のグレードは、今、この

android { 
.../// 

buildTypes { 
    release { 
     shrinkResources true 
     minifyEnabled true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
    debug { 
     shrinkResources true 
     minifyEnabled true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 

.../// 

} 

のように見え、また私のproguard-rules.pro

-ignorewarnings 

-keep class * { 
    public private *; 
} 

は、私は難読化の結果をチェックし、それが実際に動作されています。

0

あなたがProguardのルールを設定したいのはなぜ

https://ideone.com/kxsCEh

私のエラー、あなたにエラーを与えて、デフォルトの設定ですか。とにかく、このラインのGradle使用デフォルトのProGuardのルールでは、デフォルトの設定は、あなただけでその行を置く意味

minifyEnabled true 
useProguard true 
shrinkResources true 
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 

https://gist.github.com/Jackgris/c4a71328b1ae346cba04

https://gist.github.com/albinmathew/c4436f8371c9c41461ab

Proguardについての詳細情報については、このリンクをチェック。

Dexguard(ProGuardのの商用版)

より多くのあなたのコードは、あなたがDexguardを使用することができます確保するようにしたい場合。 DexguardProguardの商用バージョンです。dexguardにはというコードが付属しているため、コードをより安全にすることができます。

+0

デフォルト設定とはどういう意味ですか? –

+0

変更を加え、質問にも追加してください。 –

+0

まずは、膨らんだコードや何かを削除するためにプロガードを使いたいのですか? –

0

shrinkResources trueはあなたのコードを難読化されますあなたのイメージ(pngjpeg、など)

minifyEnabled trueを圧縮します。

これらの2つのルールはコードを縮小し、apkはもっと明るくなります。 minify以来

が有効になっている、あなたはいくつかのルールを配置する必要があり、いくつかの方法が使用するために見えるようにする必要があるため、あなたは難読化されていないクラスを維持するためにproguard-rules.proに置くことをルール。

たとえば、Firebaseで使用されるクラスがあります。Userです。そのクラスのメソッドとフィールドは、機能するために可視である必要があります。 Firebaseは応答をそのクラスに変換し、可視にする必要があります。

#-keep class .User.** {*;} 

いくつかのルールはライブラリによって定義されており、プロジェクトをビルドするために追加する必要があります。

警告は-dontwarnルールで回避できます。

+0

私の理解のためです。この警告が表示されます。警告:cryptix.util.test.TestGUI:参照されたクラスjava.awt.TextComponentを見つけることができません。正しく理解していれば、次に行う必要があります '#-keep class cryptix.util.test .TestGUI。** {*;} '?はい? –

+0

これは警告です。 '-dontwarn'で無効にする必要があります。私は自分の投稿を編集します。 –

関連する問題