proguard-rules.pro 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. # Add project specific ProGuard rules here.
  2. # You can control the set of applied configuration files using the
  3. # proguardFiles setting in build.gradle.
  4. #
  5. # For more details, see
  6. # http://developer.android.com/guide/developing/tools/proguard.html
  7. # If your project uses WebView with JS, uncomment the following
  8. # and specify the fully qualified class name to the JavaScript interface
  9. # class:
  10. #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
  11. # public *;
  12. #}
  13. # Uncomment this to preserve the line number information for
  14. # debugging stack traces.
  15. #-keepattributes SourceFile,LineNumberTable
  16. # If you keep the line number information, uncomment this to
  17. # hide the original source file name.
  18. #-renamesourcefileattribute SourceFile
  19. ###################以下为华为会议混淆文件###################
  20. # 不开启优化,因为android的dex并不像Java虚拟机需要optimize(优化)和preverify(预检)两个步骤。
  21. -dontoptimize
  22. #不使用大小写混合类名,注意,windows用户必须为ProGuard指定该选项,
  23. #因为windows对文件的大小写是不敏感的,也就是比如a.java和A.java会认为是同一个文件。
  24. #如果不这样做并且你的项目中有超过26个类的话,那么ProGuard就会默认混用大小写文件名,导致class文件相互覆盖
  25. -dontusemixedcaseclassnames
  26. #指定不去忽略非公共库的类和成员
  27. -dontskipnonpubliclibraryclasses
  28. -dontskipnonpubliclibraryclassmembers
  29. #抛出异常时保留代码行号,方便抛出异常时定位问题
  30. -keepattributes SourceFile,LineNumberTable
  31. #重命名抛出异常时的文件名称,方便抛出异常时定位问题
  32. -renamesourcefileattribute SourceFile
  33. # 混淆后就会生成映射文件
  34. # 包含有类名->混淆后类名的映射关系
  35. # 然后可以使用printmapping指定映射文件的名称
  36. -verbose
  37. # 不做预校验,preverify是proguard的4个步骤之一
  38. # Android不需要preverify,去掉这一步可加快混淆速度
  39. -dontpreverify
  40. # dump.txt文件列出apk包内所有class的内部结构
  41. -dump class_files.txt
  42. # seeds.txt文件列出未混淆的类和成员
  43. -printseeds seeds.txt
  44. # usage.txt文件列出从apk中删除的代码
  45. -printusage usage.txt
  46. # mapping.txt文件列出混淆前后的映射
  47. -printmapping mapping.txt
  48. #忽略library里面非public修饰的类。
  49. #library里的非公开类是不能被程序使用的,忽略掉这些类可以加快混淆速度。
  50. #但是请注意,有一种特殊情况:有些人编写的代码与类库中的类在同一个包下,而且对该包的非public类进行了使用,在这种情况下,就不能使用该选项了。
  51. #-skipnonpubliclibraryclasses
  52. # 保留注解,因为注解是通过反射机制来实现的
  53. -keepattributes *Annotation*
  54. # 保留js接口
  55. -keepattributes *JavascriptInterface*
  56. # 保留exception
  57. -keepattributes Exceptions
  58. # 保留内部类
  59. -keepattributes InnerClasses
  60. #保留泛型
  61. -keepattributes Signature
  62. #保留本地native方法不被混淆
  63. -keepclasseswithmembernames class * {
  64. native <methods>;
  65. }
  66. #保留枚举类
  67. -keepclassmembers enum * {
  68. public static **[] values();
  69. public static ** valueOf(java.lang.String);
  70. }
  71. # 保留Parcelable序列化类不被混淆
  72. -keep class * implements android.os.Parcelable {
  73. public static final android.os.Parcelable$Creator *;
  74. }
  75. # 保留Serializable序列化的类不被混淆
  76. -keepclassmembers class * implements java.io.Serializable {
  77. static final long serialVersionUID;
  78. private static final java.io.ObjectStreamField[] serialPersistentFields;
  79. !static !transient <fields>;
  80. !private <fields>;
  81. !private <methods>;
  82. private void writeObject(java.io.ObjectOutputStream);
  83. private void readObject(java.io.ObjectInputStream);
  84. java.lang.Object writeReplace();
  85. java.lang.Object readResolve();
  86. }
  87. # 保留资源应用名
  88. -keepclassmembers class **.R$* {
  89. public static <fields>;
  90. }
  91. # 忽略support包下的警告
  92. -dontwarn android.support.**
  93. # 保留support包下的动画
  94. -keep class android.support.annotation.Keep
  95. -keep @android.support.annotation.Keep class * {*;}
  96. -keepclasseswithmembers class * {
  97. @android.support.annotation.Keep <methods>;
  98. }
  99. -keepclasseswithmembers class * {
  100. @android.support.annotation.Keep <fields>;
  101. }
  102. -keepclasseswithmembers class * {
  103. @android.support.annotation.Keep <init>(...);
  104. }
  105. #保留系统类库
  106. -keep public class * extends android.app.Activity
  107. -keep public class * extends android.app.Application
  108. -keep public class * extends android.app.Service
  109. -keep public class * extends android.content.BroadcastReceiver
  110. -keep public class * extends android.preference.Preference
  111. -keep public class * extends android.content.ContentProvider
  112. -keep public class * extends android.view.View {
  113. public <init>(android.content.Context);
  114. public <init>(android.content.Context, android.util.AttributeSet);
  115. public <init>(android.content.Context, android.util.AttributeSet, int);
  116. public void set*(...);
  117. }
  118. #保留华为sdk相关
  119. -keep class com.hianalytics.android.**{*;}
  120. -keep class com.huawei.updatesdk.**{*;}
  121. -keep class com.huawei.hms.**{*;}
  122. -keep class com.huawei.android.hms.agent.**{*;}
  123. #OKhttp 混淆配置
  124. #https://github.com/square/okhttp/blob/5fe3cc2d089810032671d6135ad137af6f491d28/README.md#proguard
  125. -dontwarn okhttp3.**
  126. -dontwarn okio.**
  127. -dontwarn javax.annotation.**
  128. -dontwarn org.conscrypt.**
  129. # A resource is loaded with a relative path so the package of this class must be preserved.
  130. -keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
  131. #Eventbus 混淆配置
  132. #http://greenrobot.org/eventbus/documentation/proguard/
  133. -keepclassmembers class ** {
  134. @org.greenrobot.eventbus.Subscribe <methods>;
  135. }
  136. -keep enum org.greenrobot.eventbus.ThreadMode { *; }
  137. # Only required if you use AsyncExecutor
  138. #-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
  139. # <init>(java.lang.Throwable);
  140. #}
  141. #配置HME java不混淆,C++ 会调用,HMW-Video.jar
  142. -keep class com.huawei.media.audio.AudioDeviceAndroid { *;}
  143. -keep class com.huawei.media.audio.AudioDeviceAndroidService { *;}
  144. -keep class com.huawei.media.audio.JNIAudioDeviceImpl { *;}
  145. -keep class com.huawei.media.audio.JNIAudioDeviceMeetingImpl { *;}
  146. -keep class com.huawei.media.audio.JNIAudioDeviceRtcImpl { *;}
  147. -keep class com.huawei.media.video.Camera2Characteristic { *;}
  148. -keep class com.huawei.media.video.CaptureCapabilityAndroid { *;}
  149. -keep class com.huawei.media.video.DeviceInfo { *;}
  150. -keep class com.huawei.media.video.H264Decoder { *;}
  151. -keep class com.huawei.media.video.HmeDefinitions { *;}
  152. -keep class com.huawei.media.video.JNIBridge { *;}
  153. -keep class com.huawei.media.video.JNIBridgeImpl { *;}
  154. -keep class com.huawei.media.video.JNIMeetingImpl { *;}
  155. -keep class com.huawei.media.video.JNIRtcImpl { *;}
  156. -keep class com.huawei.media.video.KirinMediaCodecEncoder { *;}
  157. -keep class com.huawei.media.video.LogFile { *;}
  158. -keep class com.huawei.media.video.MediaCodecDecoder { *;}
  159. -keep class com.huawei.media.video.MediaCodecEncoder { *;}
  160. -keep class com.huawei.media.video.ScreenCaptureImageActivity { *;}
  161. -keep class com.huawei.media.video.SurfaceEncoder { *;}
  162. -keep class com.huawei.media.video.VideoCapture { *;}
  163. -keep class com.huawei.media.video.VideoCapture2Android { *;}
  164. -keep class com.huawei.media.video.VideoCaptureAndroid { *;}
  165. -keep class com.huawei.media.video.VideoCaptureDeviceInfo { *;}
  166. -keep class com.huawei.media.video.VideoCaptureDeviceInfoAndroid { *;}
  167. -keep class com.huawei.media.video.VideoRender { *;}
  168. -keep class com.huawei.media.video.VideoRenderNoGLES { *;}
  169. -keep class com.huawei.media.video.ViEAndroidGLES20 { *;}
  170. -keep class com.huawei.media.video.ViERenderer { *;}
  171. -keep class com.huawei.media.video.ViESurfaceRenderer { *;}
  172. -keep class com.huawei.media.video.VtNativeDecoder { *;}
  173. #配置TUP java 不混淆,c++ 会调用
  174. -keep class tupsdk.Tupmedia { *;} #TupCall.jar
  175. -keep class com.huawei.media.data.Conference { *;} #TupConf.jar
  176. -keep class imssdk.** { *;}
  177. # rtc sdk 混淆
  178. -keep class com.huawei.rtc.**{*;}
  179. -keep class com.huawei.allplatform.**{*;}
  180. ## native sdk 混淆
  181. -keep class com.huawei.hwmsdk.**{*;}
  182. # WebViewInterface 不能混淆
  183. -keepclassmembers class com.huawei.hwmclink.jsbridge.model.GHConfigModel {
  184. public *;
  185. }
  186. # API不能被混淆
  187. -keep public class com.huawei.**.*Api { *;}
  188. -keep class com.huawei.cloudlink.openapi.api.ICloudLinkOpenApi{*;}
  189. -keep class com.huawei.cloudlink.openapi.api.impl.CloudLinkOpenApiImpl{*;}
  190. -keep class com.huawei.hwmbiz.IBizOpenApi{*;}
  191. -keep class com.huawei.hwmbiz.impl.BizOpenApiImpl{*;}
  192. #micro service 不能混淆,有反射调用,参考华为云配置
  193. -keep public class * extends com.huawei.hwmfoundation.microservice.HCMicroService
  194. -keep public class * extends com.mapp.hcmobileframework.microapp.HCMicroApplicationDelegate
  195. -keep public class * implements com.huawei.hwmclink.jsbridge.bridge.** {*;}
  196. #继承自AbsCache 的类,要保留构造函数,否则构造函数会被优化掉,这里保留所有的构造函数,不论有没有在使用
  197. -keepclassmembers class * {
  198. <init>(...);
  199. }
  200. #RXJava 不能被混淆,因为内部有hook操作
  201. -keep class io.reactivex.**{*;}
  202. #自定义注解不能被混淆
  203. -keep public class com.huawei.hwmbiz.aspect.CheckToken
  204. -keep public class com.huawei.hwmfoundation.hook.annotation.TimeConsume
  205. -keep public class com.huawei.hwmfoundation.hook.annotation.HookDisable
  206. -keep public class com.huawei.hwmfoundation.hook.annotation.HookNotNeeded
  207. #glide 不混淆
  208. -keep class com.github.bumptech.glide.**{*;}
  209. #需要用json转换生成javabean 不混淆
  210. -keep public class * extends com.huawei.hwmfoundation.base.BaseModel{*;}
  211. #HMS SDK不可混淆
  212. -ignorewarnings
  213. -keepattributes *Annotation*
  214. -keepattributes Exceptions
  215. -keepattributes InnerClasses
  216. -keepattributes Signature
  217. -keepattributes SourceFile,LineNumberTable
  218. -keep class com.hianalytics.android.**{*;}
  219. -keep class com.huawei.updatesdk.**{*;}
  220. -keep class com.huawei.hms.**{*;}
  221. #Androidx 混淆
  222. -keep class com.google.android.material.** {*;}
  223. -keep class androidx.** {*;}
  224. -keep public class * extends androidx.**
  225. -keep interface androidx.** {*;}
  226. -dontwarn com.google.android.material.**
  227. -dontnote com.google.android.material.**
  228. -dontwarn androidx.**
  229. #路由表不能混淆,启动会从固定package下汇总路由表
  230. -keep class com.huawei.cloudlink.router.routermap.** {*;}
  231. # crashreport混淆
  232. -keep public class com.huawei.crashreport.**{*;}
  233. # IMSDK 混淆
  234. -keep class com.huawei.imsdk.ECSProxy {*;}
  235. -keep class com.huawei.imsdk.msg.** {*;}
  236. # HWMUserState用户状态不混淆
  237. -keep public class com.huawei.cloudlink.openapi.model.HWMUserState{*;}
  238. # netty不混淆,投影要用到
  239. -keep class io.netty.**{*;}
  240. #以下为极光魔链混淆
  241. -dontwarn cn.magicwindow.**
  242. -keep class cn.magicwindow.** {*;}
  243. -dontwarn cn.jiguang.**
  244. -keep class cn.jiguang.** { *; }
  245. #极光推送
  246. -dontoptimize
  247. -dontpreverify
  248. -dontwarn cn.jpush.**
  249. -keep class cn.jpush.** { *; }
  250. -keep class * extends cn.jpush.android.helpers.JPushMessageReceiver { *; }
  251. -dontwarn cn.jiguang.**
  252. -keep class cn.jiguang.** { *; }