Android ndk开发入门集锦一
1、搭建NDK环境
1.1首先配置ndk环境变量如下图输出 如何配置ndk环境变量这里不再赘述 请自行百度
1.2.如果没有ndk环境需要在AndroidStudio中下载如下图
1.3通过这里下载NDK下载 选择自己对应电脑系统位数下载即可 比如32bit或者64bit 这里不再赘述如下图所示 下载好解压默认一般放在Android sdk根目录
1.4 NDK版本选择
2、添加c++支持库
新建一个Project工程 选择c++ 然后选择对应的版本 这里需要注意是你的c++Standard支持库与ndk版本一致 否则会出现编译异常 点击finish就会开始构建项目
3、配置app/build.gradle文件
配置app build.gradle 主要配置ndk的 path 和 ndk版本号 以及abiFilters 芯片支持类型
abiFilters 'armeabi-v7a', 'arm64-v8a'
3.1选择对应cmake版本
3.2CmakeLists.txt文件
# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html# Sets the minimum version of CMake required to build the native library.cmake_minimum_required(VERSION 3.10.2) 对应cmake版本号# Declares and names the project.project("myapplication") 项目名称# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.add_library( # Sets the name of the library.face-lib# Sets the library as a shared library.SHARED# Provides a relative path to your source file(s).face-lib.cpp Facer.h Facer.cpp)
#这里指添加cpp文件 h头文件你的加载库文件
# Searches for a specified prebuilt library and stores the path as a
# variable. Because CMake includes system libraries in the search path by
# default, you only need to specify the name of the public NDK library
# you want to add. CMake verifies that the library exists before
# completing its build.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 )
//这里指找到cmake库名字# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.target_link_libraries( # Specifies the target library.face-lib# Links the target library to the log library# included in the NDK.${log-lib} )
//关联ndk动态链接so库
4、编写jni代码 cpp文件
#include <jni.h> 导入jni头文件
#include <string> 导入字符串库
#include "Facer.h" 导入Facer.h头文件extern "C" JNIEXPORT jstring JNICALL
//这里必须全路径否则就会找不到对应的类 包名+类名+方法名
Java_com_example_myapplication_Facer_getFacer(JNIEnv *env, jclass clazz, jstring top,jstring bottom, jstring right,jstring brow,jstring eyes,jstring hand) {Facer facer(//使用 env->GetStringUTFChars将jstring转化为stringenv->GetStringUTFChars(top, 0),env->GetStringUTFChars(bottom, 0),env->GetStringUTFChars(right,0),env->GetStringUTFChars(brow, 0),env->GetStringUTFChars(eyes, 0),env->GetStringUTFChars(hand, 0));return env->NewStringUTF(facer.getFace().c_str());//返回对应字符串
}
5、添加头文件
//
// Created by zm-pc on 2022/7/2.
//#include <iostream> using namespace std;#ifndef MY_APPLICATION_FACE_H
#define MY_APPLICATION_FACE_Hclass Facer {
public:Facer(const string &top="-",const string &bottom="-",const string &right="%",const string &brow="~", const string &eyes=".",const string &hand="$");~Facer();public:string top;string bottom;string right;string brow;string eyes;string hand;
public:void printFace();string getFace();};#endif //MY_APPLICATION_FACE_H
6、编译so库
6.1Build->MakeProject(Window快捷键Ctrl+F9) 然后去build->intermediates->cmake->debug->obj对应不同芯片so
6.2配置多平台交叉编译so
7、加载so库 调用native方法
这里只是简单演示 主要属性ndk开发流程以及配置
8、结束总结
8.1 NDK版本与c++ standrad库要对应
8.2 cmake要与android studio ndk也要对应
8.3 需要配置NDK环境变量
8.4 最好不要选最新cmake或者ndk环境
8.5编译出现问题一定要细心检查 不要慌 仔细检查配置
转载请注明出处 谢谢!Android ndk开发入门集锦一_KdanMin的博客-CSDN博客
Android ndk开发入门集锦一相关推荐
- Android NDK开发入门学习笔记(图文教程,极其详尽)
以前也简单用过JNI,但是只是简单用一下,好多都不明白.最近在看源码部分,有涉及到JNI调用的,所以这次打算彻底把它搞定. 先普及一下JNI的调用关系:JAVA-------------------- ...
- Android入门简书,android ndk开发入门随笔(一)
ndk,jni入门随笔 因为工作缘故最近在研究jni,ndk方面知识,在此总结入坑以来的一些问题. 配置环境可以在下面geogle官方看.下面是链接 我一说ndk,jni可能小伙伴要问了这是什么,在此 ...
- 【飞秋】Android开发——NDK开发入门
注:本文并非原创,参考了几位前辈的文章,本文只是稍作整理. 参考1:Eclipse配置NDK_R4开发环境(集成Cygwin .CDT) 分别介绍了在window和linux下配置eclipse自动化 ...
- Android NDK开发(三)——常见错误集锦以及LOG使用,androidndk
Android NDK开发(三)--常见错误集锦以及LOG使用,androidndk 转载请注明出处:http://blog.csdn.net/allen315410/article/details/ ...
- Android APP开发入门
Android APP开发入门 目录 android_studio很好用的一个就是debug 1 1导入demo编译出错 1 4使用as运行安装不了apk安装adb 2 5SeekBar组件使用 2 ...
- [Android问答] 开发环境问题集锦
[Android问答] 开发环境问题集锦 工欲善其事,必先利其器. 和iOS开发相比,Android的开发环境的版本比较多,随之而来的问题也多.显然,我们不应该浪费宝贵的时间在解决开发环境带来的问题上 ...
- 5G 时代的 Android App 开发入门与项目实战
随着移动互联网的持续发展,Android系统从智能手机逐步拓展到平板电脑.智能电视.车载大屏.智能家居.智能手表等诸多设备,Android开发依然是前景可期的IT岗位. 当然,整个社会正在迈向5G时代 ...
- 《Android应用开发入门经典(第3版)》——第6.1节创建演示应用
本节书摘来自异步社区<Android应用开发入门经典(第3版)>一书中的第6章,第6.1节创建演示应用,作者 [美]Carmen Delessio , Lauren Darcey , Sh ...
- 《Android应用开发入门经典(第3版)》——导读
本节书摘来自异步社区<Android应用开发入门经典(第3版)>一书中的目录,作者 [美]Carmen Delessio , Lauren Darcey , Shane Conder,更多 ...
- Android NDK开发之旅(2):一篇文章搞定Android Studio中使用CMake进行NDK/JNI开发
Android NDK开发之旅(2):一篇文章搞定android Studio中使用CMake进行NDK/JNI开发 (码字不易,转载请声明出处:http://blog.csdn.NET/andrex ...
最新文章
- BZOJ 2028 [SHOI2009]会场预约
- 使用HttpMessageConverter实现HTTP的序列化和反序列化
- 导入obj_3D模型obj文件格式详解
- android搜索功能xml,Android_Android ActionBar搜索功能用法详解,本文实例讲述了Android ActionBar - phpStudy...
- Makefile中怎么使用Shell if判断
- 【SLAM笔记】如何使用Eigen进行矩阵运算
- 开课吧:C++入门必知必会的基础知识汇总
- 学习V神的手把手教你写脚本引擎 一
- List集合序列排序的两种方法
- excel计算机课程表,Excel居然能做这么漂亮的课程表!(内赠Excel模板)
- 聊天软件开发_0_开篇
- 在网页中创建表格(1)
- 2018 UL国际皇冠杯将于10月4日-7日在仁川举行
- android多个按钮美化,Android开发学习系列(一)——Android按钮圆角美化
- 示波器表笔旁边的夹子是什么_示波器探头的详细使用
- 千年之恋HTML5和CSS3
- PPT制作创意封面如何排版设计?
- PE制作实录 —— 补充说明
- 量化交易 实战第三课 金融时间序列分析 Part 2
- 多媒体计算机技术在教学中的应用,浅谈多媒体计算机技术在教学中的应用
热门文章
- SEGGER Embedded Studio linux安装及环境配置
- 使用CNN实现C-MAPSS数据集里面的剩余寿命预测(Pytorch)
- 2022最新H5手机微商城运营源码 简约轻量版 对接最新Z支付个人免签接口 带搭建教程
- ssis连接oracle报错,SSIS连接Oracle问题汇总
- WinDbg分析蓝屏dump原因
- 宋体和英文字号与matlab中对照,CSS字体中英文名称对照表:如宋体对应SimSun
- 如何用xilinx sdk输出hello world
- HorizontalScrollView+TabLayout+ViewPager+XUtils
- liteide+g:Goland多版本管理
- 中科院信工所经验_2018信工所五室经验贴 - 中国科学院 - 王道论坛,专注于计算机考研的点点滴滴! - Powered by Discuz!...