Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

          解决方法:  从8.4.18版本开始, 相关的类分离到了platform模块, 所以此部分类需要重新引入正确包位置.

7. 代码混淆

         demo工程默认未开启Proguard代码混淆功能。要开启代码混淆,只要在app模块将minifyEnabled设置为true即可。

Code Block
languagegroovy
buildTypes {
    debug {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'),
                'proguard-rules.pro'
    }
    release {
        //开启代码混淆将该值设置为true
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'),
                'proguard-rules.pro'
    }
}

  使用lib集成的客户在app模块添加上述配置后,将下面的规则加入到您的proguard-rules.pro文件中(或用oem工程中的proguard-rules.pro直接替换)

Code Block
languagegroovy
-dontshrink
-dontwarn InnerClasses
-dontwarn EnclosingMethod
#Android中需要保留的类
-keep public class * extends android.app.Appliction
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class * extends android.view.View{
    *** get*();
    void set*(***);
    public <init>(android.content.Context);
    public <init>(android.content.Context, android.util.AttributeSet);
    public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}
#support包不混淆
-keep class android.support.** { *; }


#存在反射调用
-keep public class com.fr.android.chart.IFChartGlyph
-keep public class com.fr.android.script.IFHyperlink4Internet
-keep public class com.fr.android.utils.IFLocalHistory

-keep public class * extends com.fr.android.IFModule
#报表js反射调用,见before.js
-keep public class com.fr.android.stable.IFDeviceUtils
-keep public class com.fr.android.stable.IFLogger
-keep public class com.fr.android.utils.IFCodeUtils
#涉及js对象调用
-keep class com.fr.android.script.** { *; }


#网络库HttpClient
-keep class org.apache.http.** { *; }
-keep class android.net.** { *; }
-keep class com.android.internal.** { *; }
-keep class com.loopj.** { *; }
-dontwarn org.apache.http.**
-dontwarn android.net.**

#js.jar中org.mozilla.javascript.tools包下为swing的gui程序,在安卓中使用不到,先忽略警告,或者直接排除该包下的所有代码,可减少包体积
-dontwarn org.mozilla.javascript.tools.**

#WebView和JavascriptInterface
-keepclassmembers class com.fr.android.bi.script.IFJSJavaScriptInterface4BI {
   public *;
   @android.webkit.JavascriptInterface <methods>;
}
-keepclassmembers class * extends android.webkit.WebViewClient {
    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
    public boolean *(android.webkit.WebView, java.lang.String);
}
-keepclassmembers class * extends android.webkit.WebViewClient {
    public void *(android.webkit.webView, java.lang.String);
}

#第三方库
#百度推送,百度定位
-keep class com.baidu.** { *; }
-keep class vi.com.gdi.bgl.android.** { *; }
#信鸽推送
-keep class com.tencent.** { *; }
-keep public class * extends com.qq.taf.jce.JceStruct{*;}
#js运行时
-keep class org.mozilla.** { *; }
#高德定位
-keep class com.amap.** { *; }
-keep class com.autonavi.** { *; }
-keep class com.loc.** { *; }
#深信服VPN库
-keep class com.sangfor.** { *; }


#百度推送库中直接引用了华为、小米推送的类,忽略警告
-dontwarn com.baidu.**
#信鸽推送中使用了过时的API,忽略警告
-dontwarn com.tencent.**