android 打包 混淆配置_android 实际项目中混淆文件的配置(参考做法)
之前对项目混淆一直了解不是很透,趁着打包正式项目的时候有特意的去了解了一番,做些记录,备忘!
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keepattributes Signature
-keep class android.support.v4.** { *; }
-ignorewarnings
-dontwarn android.support.**
-keepattributes EnclosingMetho
-keepclassmembers class * {
public (org.json.JSONObject);
}
-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** v(...);
public static *** i(...);
public static *** w(...);
public static *** e(...);
}
-keep public class * extends android.app.Activity # 保持哪些类不被混淆
-keep public class * extends android.app.Application # 保持哪些类不被混淆
-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 com.android.vending.licensing.ILicensingService # 保持哪些类不被混淆
# 过滤R文件的混淆:
-keep class **.R$* {*;}
# 所有方法不进行混淆
-keep public abstract interface com.huawei.android.airsharing.listener{
public protected ;
}
-keep public abstract interface com.huawei.android.airsharing.api{
public protected ;
}
-keepclasseswithmembernames class * { # 保持 native 方法不被混淆
native ;
}
-keepclasseswithmembers class * { # 保持自定义控件类不被混淆
public (android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public (android.content.Context, android.util.AttributeSet, int); # 保持自定义控件类不被混淆
}
-keepclassmembers class * extends android.app.Activity { # 保持自定义控件类不被混淆
public void *(android.view.View);
}
-keepclassmembers enum * { # 保持枚举 enum 类不被混淆
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆
public static final android.os.Parcelable$Creator *;
}
#gson
-keep class **.bean.** { *; }
#webview
-keepclassmembers class fqcn.of.javascript.interface.for.webview {
public *;
}
#databinding
-dontwarn android.databinding.**
-keep class android.databinding.** { *; }
# OkHttp3
-dontwarn com.squareup.okhttp3.**
-keep class com.squareup.okhttp3.** { *;}
-dontwarn okio.**
# Okio
-dontwarn com.squareup.**
-dontwarn okio.**
-keep public class org.codehaus.* { *; }
-keep public class java.nio.* { *; }
# retrofit
-dontwarn okio.**
-dontwarn javax.annotation.**
#支付
-keep class com.alipay.android.app.IAlixPay{*;}
-keep class com.alipay.android.app.IAlixPay$Stub{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}
-keep class com.alipay.sdk.app.PayTask{ public *;}
-keep class com.alipay.sdk.app.AuthTask{ public *;}
#rx
-dontwarn sun.misc.**
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
long producerIndex;
long consumerIndex;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
rx.internal.util.atomic.LinkedQueueNode producerNode;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
rx.internal.util.atomic.LinkedQueueNode consumerNode;
}
-dontnote rx.internal.util.PlatformDependent
#eventBus
-keepattributes *Annotation*
-keepclassmembers class ** {
@org.greenrobot.eventbus.Subscribe ;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
# Only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
(Java.lang.Throwable);
}
#项目本身
#-keep class com.tecsun.mobileintegration.** {*;}
#-keep public class com.tecsun.base.** { *; }
#-keep public class com.tecsun.tsb.network.** { *; }
#-keep public class com.andview.refreshview.** { *; }
参考文章
android 打包 混淆配置_android 实际项目中混淆文件的配置(参考做法)相关推荐
- java web配置dll文件_JavaWeb项目中dll文件动态加载方法解析(详细步骤)
相信很多做Java的朋友都有过用Java调用JNI实现调用C或C++方法的经历,那么Java Web中又如何实现DLL/SO文件的动态加载方法呢.今天就给大家带来一篇JAVA Web项目中DLL/SO ...
- Android:Android NDK项目中C++文件中打印日志
Android NDK项目中C++文件中打印日志 工作需要,在NDK项目中的C++文件中打印日志,还是费了点劲查找 才达到自己 想要的效果了. 步骤 添加头文件 添加头文件 定义宏函数 #includ ...
- maven 打包数据库加密_SpringBoot项目application.yml文件数据库配置密码加密的方法...
在Spring boot开发中,需要在application.yml文件里配置数据库的连接信息,或者在启动时传入数据库密码,如果不加密,传明文,数据库就直接暴露了,相当于"裸奔"了 ...
- Springboot项目打包发布找不到项目中使用的文件
项目在启动后读取项目中某些文件的内容,在编译工具下运行是可以的,但是打成jar包后却运行异常问题. 原因:jar包中的文件不能以 File的形式返回,可以让文件以流的形式返回. InputStream ...
- (转) eclipse项目中.classpath文件详解
背景:对于java项目中.classpath文件中的相关定义一直不是很了解,有必要进行深入的学习. 1 前言 在使用eclipse或者myeclipse进行Java项目开发的时候,每个project( ...
- java调用项目中的文件_详解eclipse项目中.classpath文件的使用
1 前言 在使用eclipse或者myeclipse进行java项目开发的时候,每个project(工程)下面都会有一个.classpath文件,那么这个文件究竟有什么作用? 2 作用 .classp ...
- C#项目中一些文件类型说明
C#项目中一些文件类型说明 designer.cs 是窗体设计器生成的代码文件,作用是对窗体上的控件做初始化工作(在函数InitializeComponent()中)VS2003以前都把这部分代码放到 ...
- springboot项目中pom文件parent报错的解决方法
springboot项目中pom文件parent报错的解决方法 1:首先配置maven环境 2:修改maven的settings.xml文件 3:用编辑器修改settings文件 4:设置Eclips ...
- ide项目文件夹浅黄色编写代码无提示或看不到项目中的文件夹
JetBrains ide全家桶ide都可能出现此情况,项目文件左上角选择为项目时不展示src等包/文件夹,只有选择Project Files时才会显示项目中的文件夹,一般出现此情况都是因为进行了删除 ...
最新文章
- OpenCV环境下Laplace(拉普拉斯)和Roberts基本边缘检测算子的实现代码
- Windows下Python环境搭建
- 【热点】黑客入侵的常用手段及防护措施分析
- C/Cpp / 设计模式 / 简单工厂模式
- Java线程之守护线程(Daemon) .
- SorterBot-第1部分
- python整数类型进制表示_Python数据类型--整型
- uni-app中的数据绑定
- mpvue 微信小程序设置背景音乐
- 【爱加密】防止签名破解
- 批量打印word文档_如何安排打印Word 2007+文档
- IT程序员常去的论坛、社区、网站有哪些?
- 彩信SMIL文件解析
- STM32CUBEMX 配置12脚3641BS以及串口显示RTC时间
- 游戏联网必备: 国内外实时对战服务详细对比
- 2021年芯片产业发展的五大关键词
- 环信IM (二)添加 删除
- SAP MM ME57 把PR转成PO
- delphi中增加FastMM4有效管理你的内存使用
- Day53 Linux setitimer函数 信号集操作函数 信号捕捉 SIGCHLD信号