发布网友 发布时间:2022-04-30 16:07
共5个回答
热心网友 时间:2022-06-27 01:59
1,androidstudio1.3之后的版本就没有GenerateSignedAPK—RunProGuard这个选项了!要在build.grandle把minifyEnabled改成Ture就可以了!minifyEnabledtrue下面是我使用的代码:#指定代码的压缩级别-optimizationpasses5#包明不混合大小写-dontusemixedcaseclassnames#不去忽略非公共的库类-dontskipnonpubliclibraryclasses#优化不优化输入的类文件-dontoptimize#预校验-dontpreverify#混淆时是否记录日志-verbose#混淆时所采用的算法-optimizations!code/simplification/arithmetic,!field/*,!class/merging/*#保护注解-keepattributes*Annotation*#保持哪些类不被混淆#-keeppublicclass*extendsandroid.app.Fragment#如果有引用v4包可以添加下面这行-keeppublicclass*extendsandroid.support.v4.app.Fragment#忽略警告-ignorewarning#####################记录生成的日志数据,gradlebuild时在本项目根目录输出#################apk包内所有class的内部结构-mpclass_files.txt#未混淆的类和成员-printseedsseeds.txt#列出从apk中删除的代码-printusageunused.txt#混淆前后的映射-printmappingmapping.txt#####################记录生成的日志数据,gradlebuild时在本项目根目录输出-end################################混淆保护自己项目的部分代码以及引用的第三方jar包library##########################-libraryjarslibs/xUtils-2.6.14.jar#-libraryjarslibs/alipaysdk.jar#-libraryjarslibs/alipaysecsdk.jar#-libraryjarslibs/alipayutdid.jar#-libraryjarslibs/wup-1.0.0-SNAPSHOT.jar#-libraryjarslibs/weibosdkcore.jar#三星应用市场需要添加:sdk-v1.0.0.jar,look-v1.0.1.jar#-libraryjarslibs/sdk-v1.0.0.jar#-libraryjarslibs/look-v1.0.1.jar#我是以libaray的形式引用了一个图片加载框架,如果不想混淆keep掉-keepclasscom.nostra13.universalimageloader.**{*;}#忽略警告-dontwarncom.veidy.mobile.common.**#保留一个完整的包-keepclasscom.veidy.mobile.common.**{*;}#如果引用了v4或者v7包-dontwarnandroid.support.**############混淆保护自己项目的部分代码以及引用的第三方jar包library-end###################-keeppublicclass*extendsandroid.view.View{#public(android.content.Context);#public(android.content.Context,android.util.AttributeSet);#public(android.content.Context,android.util.AttributeSet,int);#publicvoidset*();#}#保持native方法不被混淆-keepclasseswithmembernamesclass*{native;}#保持自定义控件类不被混淆#-keepclasseswithmembersclass*{#public(android.content.Context,android.util.AttributeSet);#}#保持自定义控件类不被混淆#-keepclasseswithmembersclass*{#public(android.content.Context,android.util.AttributeSet,int);#}#保持自定义控件类不被混淆#-keepclassmembersclass*extendsandroid.app.Activity{#publicvoid*(android.view.View);#}#保持Parcelable不被混淆-keepclass*implementsandroid.os.Parcelable{publicstaticfinalandroid.os.Parcelable$Creator*;}#保持Serializable不被混淆-keepnamesclass*implementsjava.io.Serializable#保持Serializable不被混淆并且enum类也不被混淆-keepclassmembersclass*implementsjava.io.Serializable{staticfinallongserialVersionUID;privatestaticfinaljava.io.ObjectStreamField[]serialPersistentFields;!static!transient;!private;!private;privatevoidwriteObject(java.io.ObjectOutputStream);privatevoidreadObject(java.io.ObjectInputStream);java.lang.ObjectwriteReplace();java.lang.ObjectreadResolve();}#保持枚举enum类不被混淆如果混淆报错,建议直接使用上面的-keepclassmembersclass*implementsjava.io.Serializable即可#-keepclassmembersenum*{#publicstatic**[]values();#publicstatic**valueOf(java.lang.String);#}-keepclassmembersclass*{publicvoid*ButtonClicked(android.view.View);}#不混淆资源类-keepclassmembersclass**.R$*{publicstatic;}#避免混淆泛型如果混淆报错建议关掉#–keepattributesSignature#移除log测试了下没有用还是建议自己定义一个开关控制是否输出日志-assumenosideeffectsclassandroid.util.Log{publicstaticbooleanisLoggable(java.lang.String,int);publicstaticintv();publicstaticinti();publicstaticintw();publicstaticintd();publicstaticinte();}热心网友 时间:2022-06-27 01:59
1,在build.grandle添加,其中规则写在proguard-rules.pro中,也可以自定义一个文件,将其代替,比如eclipse常用的proguard-project.txtbuildTypes{release{signingConfigsigningConfigs.releaseminifyEnabledtrueproguardFilesgetDefaultProguardFile(‘proguard-android.txt‘),‘proguard-rules.pro‘}}2,在proguard-rules.pro中加入以下代码,基本可以涵盖所有-optimizationpasses5#指定代码的压缩级别-dontusemixedcaseclassnames#是否使用大小写混合-dontpreverify#混淆时是否做预校验-verbose#混淆时是否记录日志-optimizations!code/simplification/arithmetic,!field/*,!class/merging/*#混淆时所采用的算法-keeppublicclass*extendsandroid.app.Activity#保持哪些类不被混淆-keeppublicclass*extendsandroid.app.Application#保持哪些类不被混淆-keeppublicclass*extendsandroid.app.Service#保持哪些类不被混淆-keeppublicclass*extendsandroid.content.BroadcastReceiver#保持哪些类不被混淆-keeppublicclass*extendsandroid.content.ContentProvider#保持哪些类不被混淆-keeppublicclass*extendsandroid.app.backup.BackupAgentHelper#保持哪些类不被混淆-keeppublicclass*extendsandroid.preference.Preference#保持哪些类不被混淆-keepclasseswithmembernamesclass*{#保持native方法不被混淆native;}-keepclasseswithmembersclass*{#保持自定义控件类不被混淆public(android.content.Context,android.util.AttributeSet);}-keepclasseswithmembersclass*{#保持自定义控件类不被混淆public(android.content.Context,android.util.AttributeSet,int);}-keepclassmembersclass*extendsandroid.app.Activity{#保持自定义控件类不被混淆publicvoid*(android.view.View);}-keepclassmembersenum*{#保持枚举enum类不被混淆publicstatic**[]values();publicstatic**valueOf(java.lang.String);}-keepclass*implementsandroid.os.Parcelable{#保持Parcelable不被混淆publicstaticfinalandroid.os.Parcelable$Creator*;}热心网友 时间:2022-06-27 02:00
吾正好碰到此问题,经过一番搜索,在stackoverflow找到一个牛人的办法,顺利解决。希望能对各位有所帮助:热心网友 时间:2022-06-27 02:00
我也遇到此问题了,试了一下,我的app文件夹下不是proguard-rules.txt文件,是proguard-rules.pro,所以在build.gradle里面把txt改成pro,竟然就可以了。也不知道是不是新版本的问题热心网友 时间:2022-06-27 02:01
MD,我也遇到这个问题了,你的解决没有?追问无意间结局了此问题