📅  最后修改于: 2023-12-03 14:59:16.441000             🧑  作者: Mango
Android 平台通过 Java 虚拟机(JVM)实现应用程序的运行,因此默认情况下无法直接识别和执行 C 语言编写的程序。然而,在某些场景下,如开发底层库、驱动程序等,C 语言是必不可少的。
本文将介绍如何在 Android 平台使用 C 语言进行开发,并向您展示如何使用NDK(Native Development Kit)在 Android Studio 中配置 C 语言开发环境。
在 Android Studio 中,您需要下载和安装 NDK 来开发 C 语言程序。请按照以下步骤操作:
在 Android Studio 中选择 File -> Settings -> Appearance & Behavior -> System Settings -> Android SDK 并前往 SDK Tools 选项卡。
在 SDK Tools 选项卡中搜索 NDK 并勾选它。
单击 Apply 或 OK 以开始下载和安装 NDK。
接下来,您需要创建一个新的 Android 项目并启用 C 语言开发环境。
在 Android Studio 中,选择 File -> New -> New Project.
在设置向导中,选择 Native C++ 项目类型并单击 Next。
输入项目详细信息并单击 Finish。
当 Android Studio 创建新项目时,请等待它下载和安装所需的组件。
在 Android Studio 中,Gradle 文件是配置和构建项目的核心文件之一。您需要更新此文件以允许项目使用 NDK 和 C 语言。
打开项目中的 build.gradle (Project)
文件。
在文件中添加以下代码:
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"
}
}
}
打开 app 模块下的 build.gradle
文件。
在 defaultConfig
块中添加以下代码:
externalNativeBuild {
cmake {
cFlags "-std=c11"
cppFlags "-std=c++11"
}
}
android
块中添加以下代码:externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
现在,您已完成 C 语言开发环境的配置,可以开始编写 C 语言代码了。
打开 app
模块的 CMakeLists.txt
文件。
添加以下代码:
add_library(native-lib SHARED src/main/cpp/native-lib.c )
以上代码将编译名为 native-lib
的共享库,并将其指定为 src/main/cpp/native-lib.c
文件中的源代码。
在 app
模块的 java
目录下创建一个新的 native-lib
目录。
在 native-lib
目录中创建名为 native-lib.c
的新文件。
将以下代码复制并粘贴到 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 代码加载此库并使用其中的函数。
打开主活动(MainActivity
)。
将以下代码添加到 onCreate
方法中:
static {
System.loadLibrary("native-lib");
}
以上代码将加载编译的 native-lib
共享库。
onCreate
方法中:TextView tv = findViewById(R.id.sample_text);
tv.setText(stringFromJNI());
该代码将调用 C 函数 stringFromJNI()
并将其值设置为 TextView 中的文本。
您已经完成了 Android 平台上 C 语言开发环境的配置和编写 C 语言代码的编写。现在可以运行应用程序并查看结果了。
2.等待编译和构建完成后,运行您的应用程序。
通过使用 NDK 和 C 语言,您可以在 Android 平台上实现底层开发,并且可以使用一些效率更高的 C/C++ 库,这可以极大地提高您的应用程序性能。通过按照此指南中所述的步骤配置您的开发环境并编写您的 C 语言代码,您将能够在 Android 平台上轻松开发强大的应用程序和库。