Android 如何从swig生成java文件?这是由gradle完成的还是通过命令行完成的?

Android 如何从swig生成java文件?这是由gradle完成的还是通过命令行完成的?,android,swig,Android,Swig,这是我的Build.gradle文件:- project.ext{ // * SWIG options * // This and the SWIG "task" at the bottom are loosely based on: // // http://androiddeveloper.co.il/using-swig/ swigModuleFiles = ['yourfy.i']

这是我的Build.gradle文件:-
project.ext{

        // * SWIG options *

        // This and the SWIG "task" at the bottom are loosely based on:
        //
        //      http://androiddeveloper.co.il/using-swig/

        swigModuleFiles = ['yourfy.i']
        swigIncludeDirs = ['src/main/cpp/yourfy/src', 'src/main/cpp/yourfy/src/nxcommon/src/libnxcommon']
        swigJavaOutputDir = file("src/main/java/com/yourfy/yourfy/swig").absolutePath
        swigCxxOutputDir = file("src/main/cpp/swig").absolutePath

        swigModuleFilesAbs = []
        swigIncludeDirOpts = []
        swigCxxModuleFilesAbs = []

        swigModuleFiles.each { moduleFile ->
            swigModuleFilesAbs.add(file("src/main/cpp/yourfy/src/yourfy/" + moduleFile).absolutePath)
            swigCxxModuleFilesAbs.add(swigCxxOutputDir + "/" + moduleFile + ".cxx")
        }
        swigIncludeDirs.each { incDir ->
            swigIncludeDirOpts.add("-I" + file(incDir).absolutePath)
        }

    }


    // * Generate SWIG wrappers *

    // Generate .java and .cxx files for the SWIG bindings.
    //
    // It has to be done in Gradle (as opposed to the native library's CMakeLists.txt), because
    // Gradle calls the Java implementationr BEFORE running the native build, so the .java SWIG files will
    // not have been generated yet when the implementationr runs. We have to ensure that they are generated
    // before the Java implementationr runs.
    //
    // Thanks, Gradle!
    //
    // I would love to do this as a task, but unfortunately, it does not work. For some reason,
    // when building from Android Studio (NOT when running Gradle from command line), CMake is
    // actually invoked first, before any other tasks, which means that the Gradle-generated SWIG
    // CXX source files might still be missing, which CMake then complains about and aborts. For
    // now, we will have to run SWIG at the top level all the time to get it working. Right now,
    // it's reasonably fast to do so, let's see how long this holds.
    // More info:

    def swigExec = '/usr/local/bin/swig'

    // TODO: Add some auto-detection
    if (project.hasProperty('swig.executable')) {
        swigExec = project.property('swig.executable')
    }

    if (swigExec != null && file(swigExec).isFile()) {
        file(project.swigJavaOutputDir).mkdirs()
        file(project.swigCxxOutputDir).mkdirs()

        // Delete previous output files (.cxx, .h and *.java in respective directories)
        (file(project.swigJavaOutputDir).listFiles() + file(project.swigCxxOutputDir).listFiles()).each { file ->
            if (file.name.toLowerCase().endsWith(".cxx")
                    || file.name.toLowerCase().endsWith(".h")
                    || file.name.toLowerCase().endsWith(".java")
            ) {
                file.delete()
            }
        }

        [project.swigModuleFilesAbs, project.swigCxxModuleFilesAbs].transpose().each { moduleFile, cxxFile ->
            exec {
                commandLine(
                        swigExec,
                        '-java',
                        '-c++',
                        '-package', 'com.yourfy.yourfy.swig',
                        *project.swigIncludeDirOpts,
                        '-outdir', project.swigJavaOutputDir,
                        '-o', cxxFile,
                        moduleFile
                )
            }
        }
    } else {
        logger.error('Property swig.executable not set or invalid! You should set it in ' +
                'the gradle.properties file of your gradle user home directory, pointing to ' +
                'a SWIG > 3.0 executable')
    }
如何在android中生成swig包装文件?这里添加了一些链接,但仍然无法确定。 还尝试了评论中提到的以下链接:-

我尝试了两个链接,但不明白,但似乎仍然很难