Android 马甲包生成垃圾代码插件

Posted Wei_Leng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 马甲包生成垃圾代码插件相关的知识,希望对你有一定的参考价值。

androidJunkCode

项目地址:qq549631030/AndroidJunkCode 

简介: Android 马甲包生成垃圾代码插件

更多:作者   提 Bug   

标签:

此插件用于做马甲包时,减小马甲包与主包的代码相似度,避免被某些应用市场识别为马甲包。

使用方法

根目录的 build.gradle 中:

buildscript 
    repositories 
        mavenCentral()
    
    dependencies 
        classpath "com.github.qq549631030:android-junk-code:1.1.2"
    

app 目录的 build.gradle 模块中:

apply plugin: 'com.android.application'
apply plugin: 'android-junk-code'

androidJunkCode 
    variantConfig 
        release //变体名称,如果没有设置 productFlavors 就是 buildType 名称,如果有设置 productFlavors 就是 flavor+buildType,例如(freeRelease、proRelease)
            packageBase = "cn.hx.plugin.ui"  //生成 java 类根包名
            packageCount = 30 //生成包数量
            activityCountPerPackage = 3 //每个包下生成 Activity 类数量
            excludeActivityJavaFile = false //是否排除生成 Activity 的 Java 文件,默认 false(layout 和写入 AndroidManifest.xml 还会执行),主要用于处理类似神策全埋点编译过慢问题
            otherCountPerPackage = 50  //每个包下生成其它类的数量
            methodCountPerClass = 20  //每个类下生成方法数量
            resPrefix = "junk_"  //生成的 layout、drawable、string 等资源名前缀
            drawableCount = 300  //生成 drawable 资源数量
            stringCount = 300  //生成 string 数量
        
    

原 configMap 配置方式已过时,1.0.8 版以后请使用 variantConfig 配置方式"

如果有多个变体共用一个配置可以这样做

androidJunkCode 
    def config = 
        packageBase = "cn.hx.plugin.ui"
        packageCount = 30
        activityCountPerPackage = 3
        excludeActivityJavaFile = false
        otherCountPerPackage = 50
        methodCountPerClass = 20
        resPrefix = "junk_"
        drawableCount = 300
        stringCount = 300
    
    variantConfig 
        debug config
        release config
    

如果 APP 开启了混淆,需要在混淆文件里配置

#cn.hx.plugin.ui 为前面配置的 packageBase
-keep class cn.hx.plugin.ui.** *;

生成文件所在目录

build/generated/source/junk

使用插件methodCount对比

未加垃圾代码

项目代码占比 0.13%

加了垃圾代码

项目代码占比 52.93%

安利我的一个新库PriorityDialog(带优先级对话框实现)

以上是关于Android 马甲包生成垃圾代码插件的主要内容,如果未能解决你的问题,请参考以下文章

IOS+Android马甲包封装上架!

Android 马甲包 google市场混淆技术方案

实现一个iOS项目中添加多个target,并制作马甲包。

最近各大论坛铺天盖地寻马甲包上架的广告,那么问题来了什么是马甲包?

iOS马甲包上架总结

App马甲包是什么?