查看Android项目中so库的依赖路径

238 阅读1分钟

方式1:

project.afterEvaluate(new Action<Project>() {

    @Override

    public void execute(Project project) {

        Map<Project, Set<Task>> allTasks = project.getAllTasks(true);

        for (Map.Entry<Project, Set<Task>> projectSetEntry : allTasks.entrySet()) {

            Set<Task> value = projectSetEntry.getValue();

            for (Task task : value) {

                try {

                    if (task.name.contains("Libs")) {

                        System.*out*.println("-----------------task.name-----------------" + task.name);

                        task.doFirst {

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

                            it.inputs.files.each{ file ->

                                printDir(new File(file.absolutePath))

                            }

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

                        }

                   }

                } catch (Exception e) {

                    e.printStackTrace()

                }

            }

        }

    }

});

def printDir(File file) {

    if (file != null) {

        if (file.isDirectory()) {

            file.listFiles().each {

                printDir(it)

            }

        } else if (file.absolutePath.endsWith(".so") && (file.getParentFile().name == "armeabi-v7a" || file.getParentFile().name == "arm64-v8a")) {

            println "find so file: $ { file.getParentFile().name } /$ { file.name } .so"

        }

    }

}

方式二:

tasks.whenTaskAdded { task ->

    // println("task name = "+task.name)

    // if (task.name=='mergeDevNativeLibs') {

    task.doFirst {

        println("==========================================================")

        def v7a = []

        def arm64 = []

        it.inputs.files.each { file ->

            // if (file.absolutePath.endsWith("/jni")) {

            // println("==========" + file.absolutePath)

            if (file.isDirectory()) {

                file.listFiles().each { soFileDir ->

                    if (soFileDir.absolutePath.contains("armeabi-v7a")) {

                        if (soFileDir.isDirectory()) {

                            soFileDir.listFiles().each {

                                println(it.absolutePath)

                                v7a.add(it.name)

                            }

                        }

                    }

                   if (soFileDir.absolutePath.contains("arm64-v8a")) {

                        if (soFileDir.isDirectory()) {

                            soFileDir.listFiles().each {

                                println(it.absolutePath)

                                arm64.add(it.name)

                            }

                        }

                    }

                }

            }

        }

    // }

        println("v7a size: $ **{** v7a.size() **}** ")

        println("arm64 size: $ **{** arm64.size() **}** ")

        println("so in v7a, but not in arm64:")

        v7a.each {

            if (!arm64.contains(it)) {

                println("$it")

            }

        }

        println("==========================================================")

    }

    // }

}