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的 pathndk版本号 以及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开发入门集锦一相关推荐

  1. Android NDK开发入门学习笔记(图文教程,极其详尽)

    以前也简单用过JNI,但是只是简单用一下,好多都不明白.最近在看源码部分,有涉及到JNI调用的,所以这次打算彻底把它搞定. 先普及一下JNI的调用关系:JAVA-------------------- ...

  2. Android入门简书,android ndk开发入门随笔(一)

    ndk,jni入门随笔 因为工作缘故最近在研究jni,ndk方面知识,在此总结入坑以来的一些问题. 配置环境可以在下面geogle官方看.下面是链接 我一说ndk,jni可能小伙伴要问了这是什么,在此 ...

  3. 【飞秋】Android开发——NDK开发入门

    注:本文并非原创,参考了几位前辈的文章,本文只是稍作整理. 参考1:Eclipse配置NDK_R4开发环境(集成Cygwin .CDT) 分别介绍了在window和linux下配置eclipse自动化 ...

  4. Android NDK开发(三)——常见错误集锦以及LOG使用,androidndk

    Android NDK开发(三)--常见错误集锦以及LOG使用,androidndk 转载请注明出处:http://blog.csdn.net/allen315410/article/details/ ...

  5. Android APP开发入门

    Android APP开发入门 目录 android_studio很好用的一个就是debug 1 1导入demo编译出错 1 4使用as运行安装不了apk安装adb 2 5SeekBar组件使用 2 ...

  6. [Android问答] 开发环境问题集锦

    [Android问答] 开发环境问题集锦 工欲善其事,必先利其器. 和iOS开发相比,Android的开发环境的版本比较多,随之而来的问题也多.显然,我们不应该浪费宝贵的时间在解决开发环境带来的问题上 ...

  7. 5G 时代的 Android App 开发入门与项目实战

    随着移动互联网的持续发展,Android系统从智能手机逐步拓展到平板电脑.智能电视.车载大屏.智能家居.智能手表等诸多设备,Android开发依然是前景可期的IT岗位. 当然,整个社会正在迈向5G时代 ...

  8. 《Android应用开发入门经典(第3版)》——第6.1节创建演示应用

    本节书摘来自异步社区<Android应用开发入门经典(第3版)>一书中的第6章,第6.1节创建演示应用,作者 [美]Carmen Delessio , Lauren Darcey , Sh ...

  9. 《Android应用开发入门经典(第3版)》——导读

    本节书摘来自异步社区<Android应用开发入门经典(第3版)>一书中的目录,作者 [美]Carmen Delessio , Lauren Darcey , Shane Conder,更多 ...

  10. Android NDK开发之旅(2):一篇文章搞定Android Studio中使用CMake进行NDK/JNI开发

    Android NDK开发之旅(2):一篇文章搞定android Studio中使用CMake进行NDK/JNI开发 (码字不易,转载请声明出处:http://blog.csdn.NET/andrex ...

最新文章

  1. BZOJ 2028 [SHOI2009]会场预约
  2. 使用HttpMessageConverter实现HTTP的序列化和反序列化
  3. 导入obj_3D模型obj文件格式详解
  4. android搜索功能xml,Android_Android ActionBar搜索功能用法详解,本文实例讲述了Android ActionBar - phpStudy...
  5. Makefile中怎么使用Shell if判断
  6. 【SLAM笔记】如何使用Eigen进行矩阵运算
  7. 开课吧:C++入门必知必会的基础知识汇总
  8. 学习V神的手把手教你写脚本引擎 一
  9. List集合序列排序的两种方法
  10. excel计算机课程表,Excel居然能做这么漂亮的课程表!(内赠Excel模板)
  11. 聊天软件开发_0_开篇
  12. 在网页中创建表格(1)
  13. 2018 UL国际皇冠杯将于10月4日-7日在仁川举行
  14. android多个按钮美化,Android开发学习系列(一)——Android按钮圆角美化
  15. 示波器表笔旁边的夹子是什么_示波器探头的详细使用
  16. 千年之恋HTML5和CSS3
  17. PPT制作创意封面如何排版设计?
  18. PE制作实录 —— 补充说明
  19. 量化交易 实战第三课 金融时间序列分析 Part 2
  20. 多媒体计算机技术在教学中的应用,浅谈多媒体计算机技术在教学中的应用

热门文章

  1. SEGGER Embedded Studio linux安装及环境配置
  2. 使用CNN实现C-MAPSS数据集里面的剩余寿命预测(Pytorch)
  3. 2022最新H5手机微商城运营源码 简约轻量版 对接最新Z支付个人免签接口 带搭建教程
  4. ssis连接oracle报错,SSIS连接Oracle问题汇总
  5. WinDbg分析蓝屏dump原因
  6. 宋体和英文字号与matlab中对照,CSS字体中英文名称对照表:如宋体对应SimSun
  7. 如何用xilinx sdk输出hello world
  8. HorizontalScrollView+TabLayout+ViewPager+XUtils
  9. liteide+g:Goland多版本管理
  10. 中科院信工所经验_2018信工所五室经验贴 - 中国科学院 - 王道论坛,专注于计算机考研的点点滴滴! - Powered by Discuz!...