Android开发:请你吃一顿史上最全的Android混淆大餐,kotlin开发app

String name = String.format(“img_%1d”, angle + 1);

res = getResources().getIdentifier(name, “drawable”, getPackageName());

这时,我可以开启资源的严格审查模式,只会保留确定已使用的资源。

移除备用资源

Gradle 资源压缩器只会移除未被应用引用的资源,这意味着它不会移除用于不同设备配置的备用资源。必要时,我们可以使用 Android Gradle 插件的 resConfigs 属性来移除您的应用不需要的备用资源文件(常见的有用于国际化支持的 strings.xml,适配用的 layout.xml 等):

android {

defaultConfig {

//保留中文和英文国际化支持

resConfigs “en”, “zh”

}

}

自定义混淆规则


品尝完了以上"配菜",下面让我们来品味一下本文的"主菜":自定义混淆规则。首先,我们来了解一下常见的混淆命令。

keep 命令

这里说的 keep 命令指的是一系列以 -keep 开头的命令,它主要用来保留 Java 中不需要进行混淆的元素。以下是常见的 -keep 命令:

  • -keep

作用:保留指定的类和成员,防止被混淆处理。例如:

保留包:com.moos.media.entity 下面的类以及类成员

-keep public class com.moos.media.entity.**

保留类:NumberProgressBar

-keep public class com.moos.media.widget.NumberProgressBar {*;}

  • -keepclassmembers

作用:保留指定的类的成员(变量/方法),它们将不会被混淆。如:

保留类的成员:MediaUtils类中的特定成员方法

-keepclassmembers class com.moos.media.MediaUtils {

public static *** getLocalVideos(android.content.Context);

public static *** getLocalPictures(android.content.Context);

}

  • -keepclasseswithmembers

作用:保留指定的类和其成员(变量/方法),前提是它们在压缩阶段没有被删除。与-keep 使用方式类似:

保留类:BaseMediaEntity 的子类

-keepclasseswithmembers public class * extends com.moos.media.entity.BaseMediaEntity{*;}

保留类:OnProgressB

你可能感兴趣的:(程序员,面试,android,移动开发)