【Android NDK 开发】在 C 代码中获取 Android 系统信息 ( NDK 项目创建 | NDK 配置 | 获取 Android 系统版本号 )(一)

简介: 【Android NDK 开发】在 C 代码中获取 Android 系统信息 ( NDK 项目创建 | NDK 配置 | 获取 Android 系统版本号 )(一)

I . 创建 NDK 项目


1. 创建支持 NDK 的项目 : 当前最新的 Android Studio 支持直接创建 支持 C/C++ 的带 NDK 配置的项目 ;


如果向现有项目加入 C/C++ 代码 , 首先要创建 cpp 代码文件 , 然后创建 CMakeList.txt 编译脚本 , 最后在 build.gradle 中配置该编译脚本 , 这里不再详细描述 ;


在菜单栏中选择 File -> New -> New Project , 在弹出的对话框中选择 Native C++ 项目 ;


image.png


2. 设置项目属性 : 输入项目名称 , 包名 , 选择项目位置 ;


image.png


3. 选择 C++ 版本 : 选择默认即可 ;



image.png



II . NDK 项目 相关配置


1. CMakeList.txt C/C++ 代码编译脚本 :


# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html
# 设置 CMake 编译 Native 库 需要的最小版本号
cmake_minimum_required(VERSION 3.4.1)
# 创建库并为其命名 , 设置该库类型 , 静态(.a) 或 动态 (.so) , 设置编译的源代码位置
# 可以在此定义不同的库 , 并且 CMake 会编译这些库
# Gradle 在 APK 中会自动打包并使用这些库
add_library( # 设置库的名称
             native-lib
             # 设置该库时静态库
             SHARED
             # 设置源代码的相对路径 , 路径是相对于该 CMakeList.txt 编译脚本的
             native-lib.cpp )
# 查找指定的预编译库 , 将查找到的库 当做变量 存储 起来 , 之后可以直接使用该变量链接 目标库 ;
# CMake 默认包含系统库 , 这里我们需要指定 想要添加的 公共 NDK 库 名称
# CMake 会在编译前验证该库是否存在
find_library( # 设置变量路径名称
              log-lib
              # 指定 你想要的 CMake 定位的 NDK 库名称
              log )
# 指定 CMake 要链接到目标库的 其它库 ;
# 你可以链接多种库 , 如 在该脚本中定义的库 , 预编译的第三方库 , 系统库 等 ;
target_link_libraries( # 指定目标库
                       native-lib
                       # 将 NDK 中的 log 日志库链接到目标库
                       ${log-lib} )


2. build.gradle 项目编译脚本配置 :


apply plugin: 'com.android.application'
android {
    ...
    //设置 CMake 的编译脚本位置 , 和 Cmake 的版本号
    externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
            version "3.10.2"
        }
    }
}
dependencies {
    ...




目录
相关文章
|
1天前
|
存储 Java 开发工具
在Eclipse配置安装Android详细教程(新手)
在Eclipse配置安装Android详细教程(新手)
11 1
|
3天前
|
Ubuntu Android开发 数据安全/隐私保护
【Android平板编程】远程Ubuntu服务器Code-Server编程写代码
【Android平板编程】远程Ubuntu服务器Code-Server编程写代码
|
3天前
|
Oracle Java 关系型数据库
Android零基础入门(一)配置环境和安装Android Studio
Android零基础入门(一)配置环境和安装Android Studio
13 0
|
3天前
|
Shell 开发工具 Android开发
android 修改kernel编译版本信息
android 修改kernel编译版本信息
12 0
|
3天前
|
Android开发
Android 获取签名信息
Android 获取签名信息
6 0
|
3天前
|
Shell Android开发
android mk中打印信息
android mk中打印信息
8 0
|
3天前
|
Java Android开发
Android 长按桌面显示菜单的代码
Android 长按桌面显示菜单的代码
8 0
|
3天前
|
Java Android开发
Android 切换壁纸代码流程追踪
Android 切换壁纸代码流程追踪
12 0
|
Java 调度 Android开发
android体系课-系统启动流程-之zygote进程启动过程源码分析
笔者刚开始学习Android的时候也和大部分同学一样,只会使用一些应用层面的知识,对于一些比较常见的开源框架如<mark>RxJava</mark>,<mark>OkHttp</mark>,<mark>Retrofit</mark>,以及后来谷歌推出的<mark>协程</mark>等,都只在使用层面,对于他们<mark>内部原理</mark>,基本没有去了解觉得够用就可以了,又比如Activity,Service等四大组件的使用原理,系统开机过程,Launcher启动过程等知之甚少,知其然而不知其所以然,结果就是出现某些问题,不知道从哪里找原因,只能依赖万能的百度,但是百度看多了,你会发现自己