Android 优化之 查找so 文件的来源

序言

有时候我们需要优化apk的包体积大小。比如下面这样的。一个so文件大小有10M。但是我们并不知道so文件是那个库引入的。所以需要研究一下。

方法

在参考网上现有方法,加上自己测试以后。有了下面的成功。而且在gradle 8.4.2都可以成功。相信大家都可以成功。

  classpath 'com.android.tools.build:gradle:8.4.2'

代码

需要配置到根目录的build.gradle文件中,需要配置到allprojects中

allprojects {
   
    //列出所有包含有so文件的库信息
    tasks.configureEach { task ->

        if (task.name.contains('NativeLibs')) { //如果是有多个flavor,则用 mergeFlavorDebugNativeLibs的形式


            task.inputs.files.each {
                file->   printDir(new File(file.absolutePath))
            }
            task.doFirst {

                println("------------------- find so files start -------------------")
                println("------------------- find so files start -------------------")
                println("------------------- find so files start -------------------")

                it.inputs.files.each { file ->
                    printDir(new File(file.absolutePath))
                }

                println("------------------- find so files end -------------------")
                println("------------------- find so files end -------------------")
                println("------------------- find so files end -------------------")
            }
        }
    }

}

def printDir(File file) {
    if (file != null) {
        if (file.isDirectory()) {
            file.listFiles().each {
                printDir(it)
            }
        } else if (file.absolutePath.endsWith(".so")) {
            println "find so file: $file.absolutePath"
        }
    }
}

执行

点击gralde菜单,找到任务mergeXXXZZZNativeLibs 双击执行就行了。XXX是你的风味名称,ZZZ是你的编译类型。
在这里插入图片描述

结果

所有的so文件都打印出来了,搜索一下就行了
在这里插入图片描述

注意

如果不输出内容可以先清理一下工程
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值