📜  android 无法识别 - C 编程语言(1)

📅  最后修改于: 2023-12-03 14:59:16.441000             🧑  作者: Mango

Android 无法识别 C 编程语言

介绍

Android 平台通过 Java 虚拟机(JVM)实现应用程序的运行,因此默认情况下无法直接识别和执行 C 语言编写的程序。然而,在某些场景下,如开发底层库、驱动程序等,C 语言是必不可少的。

本文将介绍如何在 Android 平台使用 C 语言进行开发,并向您展示如何使用NDK(Native Development Kit)在 Android Studio 中配置 C 语言开发环境。

配置 C 语言开发环境
步骤一: 下载和安装 NDK

在 Android Studio 中,您需要下载和安装 NDK 来开发 C 语言程序。请按照以下步骤操作:

  1. 在 Android Studio 中选择 File -> Settings -> Appearance & Behavior -> System Settings -> Android SDK 并前往 SDK Tools 选项卡。

  2. 在 SDK Tools 选项卡中搜索 NDK 并勾选它。

  3. 单击 ApplyOK 以开始下载和安装 NDK。

步骤二: 创建新项目

接下来,您需要创建一个新的 Android 项目并启用 C 语言开发环境。

  1. 在 Android Studio 中,选择 File -> New -> New Project.

  2. 在设置向导中,选择 Native C++ 项目类型并单击 Next

  3. 输入项目详细信息并单击 Finish

  4. 当 Android Studio 创建新项目时,请等待它下载和安装所需的组件。

步骤三: 配置 Gradle 文件

在 Android Studio 中,Gradle 文件是配置和构建项目的核心文件之一。您需要更新此文件以允许项目使用 NDK 和 C 语言。

  1. 打开项目中的 build.gradle (Project) 文件。

  2. 在文件中添加以下代码:

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.1.3"
        classpath "com.android.tools.build:gradle-experimental:0.9.3"
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven {
            url "https://jitpack.io"
        }
    }
}
  1. 打开 app 模块下的 build.gradle 文件。

  2. defaultConfig 块中添加以下代码:

externalNativeBuild {
    cmake {
        cFlags "-std=c11"
        cppFlags "-std=c++11"
    }
}
  1. android 块中添加以下代码:
externalNativeBuild {
    cmake {
        path "CMakeLists.txt"
    }
}
步骤四: 编写 C 语言代码

现在,您已完成 C 语言开发环境的配置,可以开始编写 C 语言代码了。

  1. 打开 app 模块的 CMakeLists.txt 文件。

  2. 添加以下代码:

add_library(native-lib SHARED src/main/cpp/native-lib.c )

以上代码将编译名为 native-lib 的共享库,并将其指定为 src/main/cpp/native-lib.c 文件中的源代码。

  1. app 模块的 java 目录下创建一个新的 native-lib 目录。

  2. native-lib 目录中创建名为 native-lib.c 的新文件。

  3. 将以下代码复制并粘贴到 native-lib.c 中:

#include <jni.h>
#include <string>

extern "C" JNIEXPORT jstring JNICALL
Java_com_example_testapp_MainActivity_stringFromJNI(JNIEnv *env, jobject /* this */) {
    std::string hello = "Hello from C++";
    return env->NewStringUTF(hello.c_str());
}

该代码将一个名为 stringFromJNI 的 C 函数暴露给 Java 代码。

步骤五: 加载共享库

现在,您已经编写了 C 语言代码并将其编译为共享库,现在可以通过 Java 代码加载此库并使用其中的函数。

  1. 打开主活动(MainActivity)。

  2. 将以下代码添加到 onCreate 方法中:

static {
    System.loadLibrary("native-lib");
}

以上代码将加载编译的 native-lib 共享库。

  1. 将以下代码添加到 onCreate 方法中:
TextView tv = findViewById(R.id.sample_text);
tv.setText(stringFromJNI());

该代码将调用 C 函数 stringFromJNI() 并将其值设置为 TextView 中的文本。

步骤六: 运行应用程序

您已经完成了 Android 平台上 C 语言开发环境的配置和编写 C 语言代码的编写。现在可以运行应用程序并查看结果了。

  1. 单击 Android Studio 中的运行按钮。

2.等待编译和构建完成后,运行您的应用程序。

  1. 您应该看到一个可以显示 "Hello from C++" 的消息的文本视图。
结论

通过使用 NDK 和 C 语言,您可以在 Android 平台上实现底层开发,并且可以使用一些效率更高的 C/C++ 库,这可以极大地提高您的应用程序性能。通过按照此指南中所述的步骤配置您的开发环境并编写您的 C 语言代码,您将能够在 Android 平台上轻松开发强大的应用程序和库。