IntelliJ IDEA 支持Gradle项目中的 JNI 开发。

本教程基于 Java 1.8 和 Gradle 4.0 版本。本教程使用软件模型和gcj示例项目。

如果要使用替换插件,可以查看JNI 示例项目。

添加 JNI 支持

您可以从 VCS 克隆并检查我们的整个JNI 项目,以了解一切是如何工作的。或者,您可以从build.gradle文件中复制代码并将其添加到您的项目中。

  1. 创建一个新的或打开一个现有的Gradle 项目。
  2. 打开build.gradle文件。
  3. 将以下代码添加到build.gradle

    apply plugin: 'java'
    apply plugin: 'application'
    apply plugin: 'c'
    
    mainClassName = 'HelloWorld'
    
    repositories {
        mavenCentral()
    }
    dependencies {
        testCompile('junit:junit:4.12')
    }
    
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    
    test {
        systemProperty "java.library.path", file("${buildDir}/libs/hello/shared").absolutePath
    }
    
    model {
        platforms {
            x64 {
                architecture "x64"
            }
        }
    
        components {
            hello(NativeLibrarySpec) {
                binaries.all {
                    if (targetPlatform.operatingSystem.macOsX) {
                        cCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include"
                        cCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include/darwin"
                        cCompiler.args '-mmacosx-version-min=10.4'
                        linker.args '-mmacosx-version-min=10.4'
                    } else if (targetPlatform.operatingSystem.linux) {
                        cCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include"
                        cCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include/linux"
                        cCompiler.args '-D_FILE_OFFSET_BITS=64'
                    } else if (targetPlatform.operatingSystem.windows) {
                        cCompiler.args "-I${org.gradle.internal.jvm.Jvm.current().javaHome}/include"
                        cCompiler.args "-I${org.gradle.internal.jvm.Jvm.current().javaHome}/include/win32"
                        linker.args "Shlwapi.lib", "Advapi32.lib"
                    } else if (targetPlatform.operatingSystem.freeBSD) {
                        cCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include"
                        cCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include/freebsd"
                    }
                }
            }
        }
    }
    
    test.dependsOn 'helloSharedLibrary'

为了使您的设置顺利进行,请记住以下详细信息:

  • IntelliJ IDEA 使用Gradle 设置中的 Gradle JVM 版本。
  • 根据您的操作系统,编译器参数可能会有所不同,请在更改时和 build.gradle 中记住cCompiler.args一点linker.args
  • 当使用现有系统属性运行测试test {systemProperty "java.library.path", file("${buildDir}/libs/hello/shared").absolutePath}并且这些测试依赖于 时test.dependsOn 'helloSharedLibrary',IntelliJ IDEA会在项目工具窗口中为共享库生成二进制libhello.dylib文件。

1.png

  1. 在项目工具窗口中,选择src | java目录。
  2. 右键单击java目录并选择新建 | Java Class创建HelloWorld将使用C代码的 Java 类。
  3. 在编辑器中打开创建的HelloWorld类,输入以下代码:

    class HelloWorld {
        public native void print();
    
        static {
            System.loadLibrary("hello");
        }
    
    }

文件中指定的代码将加载生成的系统库。

  1. 在Project工具窗口中,在src目录下,创建hello目录和c子目录。
  2. c子目录中,创建hello.c文件,该文件是您的C程序的文件。

2.c.png

  1. 在编辑器中打开hello.c文件并指定以下代码:

    #include <jni.h>
    #include <stdio.h>
    
    JNIEXPORT void JNICALL
    Java_HelloWorld_print(JNIEnv *env, jobject obj)
    {
    printf("Hello World!\n");
    return;
    }

此时,您可以根据需要使用本机代码进一步开发您的应用程序。

标签: idea破解, idea激活码, IDEA, IDEA主题, IDEA教程, idea破解插件, idea注册码, idea注册码2021, idea注册码2022, idea注册码失效, idea注册码永久, idea注册码在线生成, idea破解教程, IDEA基础教程, IDEA高级教程, IDEA核心教程, IDEA插件, IDEA入门教程