Android 列出所有包含有so文件的库信息

299 阅读1分钟

在app模块的build.gradle文件底部添加

//列出所有包含有so文件的库信息
tasks.whenTaskAdded { Task task ->
    if (task.name.startsWith("merge") && task.name.endsWith("NativeLibs")) {
        //mergeDebugNativeLibs
        //mergeFlavorDebugNativeLibs
        task.doFirst { Task t ->
            println("------------------- find so files start -------------------")

            Set<String> soPathSet = new HashSet<>()
            t.inputs.files.each { File file ->
                collectSoPath(new File(file.absolutePath), soPathSet)
            }

            soPathSet.each { String p ->
                println "find so file: $p"
            }

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

def collectSoPath(File file, Set<String> soPathSet) {
    if (file == null) {
        return
    }
    if (file.isDirectory()) {
        file.listFiles().each { File f ->
            collectSoPath(f, soPathSet)
        }
        return
    }
    def path = file.absolutePath
    if (path.endsWith(".so") && path.contains("armeabi-v7a")) {
        soPathSet.add(path)
    }
}