首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Android Studio中制作JNI hello world程序?

在Android Studio中制作JNI hello world程序的步骤如下:

  1. 首先,确保你已经安装了Android Studio,并且已经配置好了NDK(Native Development Kit)。
  2. 创建一个新的Android项目,选择"Empty Activity"模板。
  3. 在项目的"app"模块下,创建一个名为"jni"的文件夹。
  4. 在"jni"文件夹下,创建一个名为"hello.c"的C源文件,用于编写JNI代码。以下是一个简单的示例:
代码语言:txt
复制
#include <jni.h>
#include <stdio.h>

JNIEXPORT void JNICALL
Java_com_example_myapplication_MainActivity_helloFromJNI(JNIEnv *env, jobject instance) {
    printf("Hello from JNI!\n");
}
  1. 在项目的"app"模块下,打开"build.gradle"文件,添加以下配置:
代码语言:txt
复制
android {
    // ...

    defaultConfig {
        // ...

        externalNativeBuild {
            cmake {
                cppFlags ""
            }
        }
    }

    // ...

    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
}
  1. 在"jni"文件夹下,创建一个名为"CMakeLists.txt"的文件,用于配置CMake构建脚本。以下是一个简单的示例:
代码语言:txt
复制
cmake_minimum_required(VERSION 3.4.1)

add_library(hello-jni SHARED hello.c)

target_link_libraries(hello-jni log)
  1. 在Android Studio的底部工具栏中,点击"Build"按钮,或者使用快捷键"Ctrl + F9",进行项目构建。
  2. 构建成功后,在"app/build/intermediates/cmake/debug/obj"目录下,会生成一个名为"libhello-jni.so"的共享库文件。
  3. 在MainActivity.java文件中,添加一个native方法的声明:
代码语言:txt
复制
public class MainActivity extends AppCompatActivity {
    // ...

    public native void helloFromJNI();

    // ...
}
  1. 在MainActivity.java文件中,找到onCreate方法,在方法中调用native方法:
代码语言:txt
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // ...

    helloFromJNI();

    // ...
}
  1. 在MainActivity.java文件中,添加加载共享库的代码:
代码语言:txt
复制
static {
    System.loadLibrary("hello-jni");
}
  1. 运行你的Android应用程序,你将在Logcat中看到"Hello from JNI!"的输出。

这样,你就成功在Android Studio中制作了一个JNI hello world程序。请注意,这只是一个简单的示例,实际的JNI开发可能涉及更复杂的操作和配置。如果你想深入了解JNI开发,可以参考官方文档或其他相关资源。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何在Android Studio下进行NDK开发

先看什么是JNI?JNI的全称就是Java Native Interface,即java本地开发接口。可能大家和我一样,一听到接口什么的就犯懵:“我也知道这是java本地开发接口的意思,但它具体是个什么意思我还是搞不明白。”其实JNI它就是一种协议,一说协议,那它就是对某种东西的一个规范和约束,说的好听一点就是标准化。如果你想用我这个东西,那你必须要遵守我这边的规范。像http协议一样,http作为超文本传输协议,它规范了我们上网时从客户端到服务器端等一系列的运作流程。正因为如此,我们才能畅通无阻的上网。那么换做JNI也一样,只不过JNI这个协议是用来沟通java代码和外部的本地代码(c/c++)。也就是说有了JNI这个协议,我们才能够随意的让java代码调用C/C++的代码,同样C/C++的代码也可以调用java的代码。如果没有这个协议作为支撑,那么java和C/C++代码想要相互调用是不可能的。下面通过两个图简单看一下JNI协议在系统架构中处于什么位置:

03
  • Android程序中,内嵌ELF可执行文件-- Android开发C语言混合编程总结

    都知道的,Android基于Linux系统,然后覆盖了一层由Java虚拟机为核心的壳系统。跟一般常见的Linux+Java系统不同的,是其中有对硬件驱动进行支持,以避开GPL开源协议限制的HAL硬件抽象层。 大多数时候,我们使用JVM语言进行编程,比如传统的Java或者新贵Kotlin。碰到对速度比较敏感的项目,比如游戏,比如视频播放。我们就会用到Android的JNI技术,使用NDK的支持,利用C++开发高计算量的模块,供给上层的Java程序调用。 本文先从一个最简单的JNI例子来开始介绍Android中Java和C++的混合编程,随后再介绍Android直接调用ELF命令行程序的规范方法,以及调用混合了第三方库略微复杂的命令行程序。

    04
    领券