android studio 代码混淆错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android studio 代码混淆错误相关的知识,希望对你有一定的参考价值。
Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.
> java.io.IOException: Please correct the above warnings first.
设置了log输出无效
修改proguard-project.txt,增加以下内容:
#### -- Picasso --
-dontwarn com.squareup.picasso.**
#### -- OkHttp --
-dontwarn com.squareup.okhttp.internal.**
#### -- Apache Commons --
-dontwarn org.apache.commons.logging.**
-ignorewarnings
-keep class *
public private *;
参考技术C 我也遇到此问题了,试了一下,我的app文件夹下不是proguard-rules.txt文件,是proguard-rules.pro,所以在build.gradle里面把txt改成pro,竟然就可以了。也不知道是不是新版本的问题 参考技术D MD,我也遇到这个问题了,你的解决没有?追问
无意间结局了此问题
Android Studio代码混淆添加
因为Android是使用Java开发的,所以开发者可以使用ProGuard对代码进行混淆。SDK已经集成了ProGuard工具,开发者可以从SDK目录下的\\tools\\proguard目录中进行查看。
ProGuard是一个免费的Java类文件收缩,优化,混淆和预校验器。它可以检测并删除未使用的类,字段,方法和属性。它可以优化字节码,并删除未使用的指令。它可以将类、字段和方法使用短无意义的名称进行重命名。最后,预校验的Java6或针对Java MicroEdition的所述处理后的码。
下面就和大家分享一下对使用了第三方库的项目进行混淆的经验。
ProGuard默认会对第三方库也进行混淆的,而第三方库有的已经混淆过了,有的使用了Java反射技术,所以我们在进行代码混淆的时候要排除这些第三方库。排除对第三方库的混淆需要在混淆规则文件(通常是:proguard-project.txt或proguard.cfg或proguard-rules.pro或proguard-rules.txt也可以是其它的文件名只要在配置文件中将含有混淆规则的文件名配置进去就行了)中添加如下规则:
1.如果使用了Gson之类的工具要使JavaBean类即实体类不被混淆。
2.如果使用了自定义控件那么要保证它们不参与混淆。
3.如果使用了枚举要保证枚举不被混淆。
4.对第三方库中的类不进行混淆
a.混淆时保护引用的第三方jar包
如:-libraryjars libs/baidumapapi_v3_2_0.jar #保护引用的第三方jar包不被混淆
注意:在使用Eclipse+ADT时需要加入-libraryjars libs/...,如果你是使用android Studio开发的项目则不需要加入libs包中的jar包,这是因为,通过Android Studio进行混淆代码时,默认已经将 lib目录中的 jar 都已经添加到打包脚本中,所以不需要再次手动添加,否则会出现“ java.io.IOException: The same input jar is specified twice” 错误。
b.混淆时保护第三方jar包中的类不被混淆
如:-keep class com.baidu.** *; #让ProGuard不要警告找不到com.baidu.**这个包里面的类的相关引用
-dontwarn com.baidu.** #保持com.baidu.**这个包里面的所有类和所有方法不被混淆。
附:小编开发中用到的一些混淆规则,大家可以根据需要复制到自己的项目中的混淆规则的文件中即可。
[plain] view plain copy print?- ################common###############
- -keep class com.jph.android.entity.** *; #实体类不参与混淆
- -keep class com.jph.android.view.** *; #自定义控件不参与混淆
- ################baidu map###############
- -libraryjars libs/baidumapapi_v3_2_0.jar
- -libraryjars libs/locSDK_5.0.jar
- -keep class com.baidu.** *;
- -keep class vi.com.gdi.bgl.android.***;
- -dontwarn com.baidu.**
- ################afinal##################
- #-libraryjars libs/afinal_0.5_bin.jar
- #-keep class net.tsz.afinal.** *;
- #-keep public class * extends net.tsz.afinal.**
- #-keep public interface net.tsz.afinal.** *;
- #-dontwarn net.tsz.afinal.**
- ################xutils##################
- -libraryjars libs/xUtils-2.6.14.jar
- -keep class com.lidroid.xutils.** *;
- -keep public class * extends com.lidroid.xutils.**
- -keepattributes Signature
- -keepattributes *Annotation*
- -keep public interface com.lidroid.xutils.** *;
- -dontwarn com.lidroid.xutils.**
- -keepclasseswithmembers class com.jph.android.entity.**
- <fields>;
- <methods>;
- ################支付宝##################
- -libraryjars libs/alipaysecsdk.jar
- -libraryjars libs/alipayutdid.jar
- -libraryjars libs/alipaysdk.jar
- -keep class com.alipay.android.app.IAliPay*;
- -keep class com.alipay.android.app.IAlixPay*;
- -keep class com.alipay.android.app.IRemoteServiceCallback*;
- -keep class com.alipay.android.app.lib.ResourceMap*;
- ################gson##################
- -libraryjars libs/gson-2.2.4.jar
- -keep class com.google.gson.** *;
- #-keep class com.google.***;
- -keep class sun.misc.Unsafe *;
- -keep class com.google.gson.stream.** *;
- -keep class com.google.gson.examples.android.model.** *;
- -keep class com.google.**
- <fields>;
- <methods>;
- -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();
- -dontwarn com.google.gson.**
- ################httpmime/httpcore##########
- -libraryjars libs/httpcore-4.3.2.jar
- -libraryjars libs/httpmime-4.3.5.jar
- -keep class org.apache.http.** *;
- -dontwarn org.apache.http.**
- ####################jpush##################
- -libraryjars libs/jpush-sdk-release1.7.1.jar
- -keep class cn.jpush.** *;
- -keep public class com.umeng.fb.ui.ThreadView #双向反馈功能代码不混淆
- -dontwarn cn.jpush.**
- -keepclassmembers class *
- public <init>(org.json.JSONObject);
- #不混淆R类
- -keep public class com.jph.android.R$*
- public static final int *;
- -keepclassmembers enum *
- public static **[] values();
- public static ** valueOf(java.lang.String);
- ####################umeng##################
- -libraryjars libs/umeng-analytics-v5.2.4.jar
- -keep class com.umeng.analytics.** *;
- -dontwarn com.umeng.analytics.**
- #-keep public class * extends com.umeng.**
- #-keep public class * extends com.umeng.analytics.**
- #-keep public class * extends com.umeng.common.**
- #-keep public class * extends com.umeng.newxp.**
- -keep class com.umeng.** *;
- -keep class com.umeng.analytics.** *;
- -keep class com.umeng.common.** *;
- -keep class com.umeng.newxp.** *;
- -keepclassmembers class *
- public <init>(org.json.JSONObject);
- -keep class com.umeng.**
- -keep public class com.idea.fifaalarmclock.app.R$*
- public static final int *;
- -keep public class com.umeng.fb.ui.ThreadView
- -dontwarn com.umeng.**
- -dontwarn org.apache.commons.**
- -keep public class * extends com.umeng.**
- -keep class com.umeng.** *;
- ####################universal-image-loader########
- -libraryjars libs/universal-image-loader-1.9.3.jar
- -keep class com.nostra13.universalimageloader.** *;
- -dontwarn com.nostra13.universalimageloader.**
- ####################zxing#####################
- -libraryjars libs/zxing.jar
- -libraryjars libs/zxing_apply.jar
- -keep class com.google.zxing.** *;
- -dontwarn com.google.zxing.**
- ####################BASE64Decoder##################
- -libraryjars libs/sun.misc.BASE64Decoder.jar
- ####################support.v4#####################
- Android Studio 代码混淆(你真的会混淆吗)