序言
有时候我们需要优化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文件都打印出来了,搜索一下就行了
注意
如果不输出内容可以先清理一下工程