Ubuntu AndroidStudio NDK极简环境搭建

本文介绍了如何在Android应用中使用AndroidStudioNDK进行底层音频处理,包括使用OpenSLES或AAudioAPI,以及如何构建和打包C/C++动态库,以提高性能和利用开源库。指南涵盖了NDK环境搭建、C++代码编写和APK生成的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

根据文章https://blog.youkuaiyun.com/jinauto/article/details/133957259?spm=1001.2014.3001.5502的介绍,除了AudioRecorder外,想进行更底层的对麦克风的操作,就需要OpenSL ES或AAudio了。然而这两个API都是NDK的接口,这里就需要NDK的开发了。

Android Studio NDK(Native Development Kit)是一套用于在Android应用中嵌入使用本地代码编写的组件的工具集。它允许开发人员使用C和C++等本地代码语言来实现应用的部分功能。

NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具包括交叉编译器,并提供相应的mk文件隔离CPU、平台、ABI等差异。开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。

使用NDK的原因包括:

  1. 大部分现存的开源库都是用C/C++代码编写的,使用NDK可以方便地利用这些库。
  2. 提高程序的执行效率,因为本地代码通常比Java代码执行效率更高。
  3. 便于移植,因为本地代码一般不依赖于特定的平台或处理器架构。

在某些特定场景下,使用NDK来开发Android的功能是很有价值的。例如,对于重要的核心代码保护,或者需要使用到优秀的第三方C/C++库的情况,以及需要在多个平台上移植代码或处理大量数据追求性能的场景。

网上找了一些NDK环境的搭建,都比较复杂,我这里说的我的基础环境,Ubuntu 20.04 + Android Studio Giraffe 2022.3.1 Patch 2,搭建起来非常简单。

1,打开SDK Manager > Android SDK > SDK Tools

选中NDK和CMake,点击Apply,这样就开始下载了

2,等待下载完毕,新建一个Native C++工程

3,工程建好后,等待下载完毕,就自动生成一个同时有Jave的空Activity和C++ so库代码的工程

NDK选择,File > Project Structure > Modules > NDK Version下拉选择一下

照猫画虎试着加一个返回int函数的代码

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

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

extern "C" JNIEXPORT jint JNICALL
Java_com_jin_bluerecorder_MainActivity_IntFromJNI(
        JNIEnv* env,
        jobject /* this */) {
    int ret = 888;
    return ret;
}

直接可以编译生成APK,运行可以成功调用C++的so库

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值