Android NDK开发(一)生成指定平台的ndk及根据native接口生成jni接口

发布于:2024-05-16 ⋅ 阅读:(66) ⋅ 点赞:(0)

为了初步了解Android NDK开发,本文记录了Android Studio使用过程中的部分内容。


本专栏知识点是通过<零声教育>的音视频流媒体高级开发课程进行系统学习,梳理总结后写下文章,对音视频相关内容感兴趣的读者,可以点击观看课程网址:零声教育


CPU架构

Android⽬前⽀持以下7种ABIs(Application Binary Interface的缩写,即应⽤⼆进制接⼝):mips,mips64,X86,X86–64,arm64-v8a,armeabi,armeabi-v7a

CPU框架 描述 市场占有
arm64-v8a 第8代ARM,64位 ⽬前主流版本
armeabi-v7a 第7代ARM,32位 ⼀些⽼旧⼿机从2011年起⼤规模使⽤
armeabi 第5代ARM,32位,NDK r17不再⽀持 极少,可忽略
x86_64
X86
intel,64位/32位,可兼容arm的so库 1%以下
mips64/mips NDK r17不再⽀持 极少⽤于⼿机,可以忽略

Cpu架构会向下兼容

app->cpp->CMakeLists.txxt 内容注释:

cmake_minimum_required(VERSION 3.4.1)
add_library( 
		# 库名
        native-lib
        # 是否生成动态库
        SHARED
        # 源文件.
        native-lib.cpp)
find_library( # Sets the name of the path variable.
        log-lib

        # Specifies the name of the NDK library that
        # you want CMake to locate.
        log)
     
target_link_libraries(
		 # Specifies the target library.
        native-lib
        # 自定义的变量,用的时候用${var}
        ${log-lib})

生成指定平台的ndk

修改app中的build.gradle,分为两种方法

externalNativeBuild {
            cmake {
                cppFlags ""
                //配置动态库 对so有影响
//                arguments '-DANDROID_STL=c++_shared'
//                abiFilters 'armeabi-v7a', 'arm64-v8a'//第一种方法
            }
        }
        ndk { //第二种方法
            abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86'
        }

javah根据native接口生成jni接口

JNI接⼝命名规则:Java_
javah工具设置:File -> settings ->Tools ->External Tools
在这里插入图片描述
使用:右键->External Tools
在这里插入图片描述