【Android ncnn】整理

  1. Android开发,从“HelloWorld”开始

  2. Android JNI(一)——NDK与JNI基础
    一篇很好的博客,解釋清楚了很多概念。
    关键点摘要
    开发JNI程序会受到系统环境限制,因为用C/C++ 语言写出来的代码或模块,编译过程当中要依赖当前操作系统环境所提供的一些库函数,并和本地库链接在一起。而且编译后生成的二进制代码只能在本地操作系统环境下运行,因为不同的操作系统环境,有自己的本地库和CPU指令集,而且各个平台对标准C/C++的规范和标准库函数实现方式也有所区别。这就造成了各个平台使用JNI接口的Java程序,不再像以前那样自由的跨平台。如果要实现跨平台, 就必须将本地代码在不同的操作系统平台下编译出相应的动态库。

  3. https://www.jianshu.com/p/b4431ac22ec2
    在android中实现java对c++的调用,实现hello world。⭐⭐⭐

关键点摘要:

  • 先和大家说下我是怎么想象的,首先我们在点击Android Studio中的run按钮的时候,它是执行Gradle来进行打包的,所以说关于CMake的是怎么植入进去的,一定在项目的build.gradle,有相应的入口。

  • cmakelist.txt详解
    CMakeLists.txt我们看到这里主要是分为四个部分,下面我们就依次来看下

  • cmake_minimum_required(VERSION 3.4.1):指定CMake的最小版本
  • add_library:创建一个静态或者动态库,并提供其关联的源文件路径,> 开发者可以定义多个库,CMake会自动去构建它们。Gradle可以自动将> 它们打包进APK中。
    • 第一个参数——native-lib:是库的名称
    • 第二个参数——SHARED:是库的类别,是动态的还是静态的
    • 第三个参数——src/main/cpp/native-lib.cpp:是库的源文件的路径
  • find_library:找到一个预编译的库,并作为一个变量保存起来。由于CMake在搜索库路径的时候会包含系统库,并且CMake会检查它自己之编译的库的名字,所以开发者需要保证开发者自行添加的库的名字的独> 特性。
    • 第一个参数——log-lib:设置路径变量的名称
    • 第一个参数—— log:指定NDK库的名子,这样CMake就可以找到这个库
  • target_link_libraries:指定CMake链接到目标库。开发者可以链接多个库,比如开发者可以在此定义库的构建脚本,并且预编译第三方库或者系统库。
    • 第一个参数——native-lib:指定的目标库
    • 第一个参数——${log-lib}:将目标库链接到NDK中的日志库,
  1. Android笔记之使用CMake进行JNI开发(Android Studio)
    cmake有详细的注释,有一些使用技巧,值得一看。⭐⭐⭐

猜你喜欢

转载自blog.csdn.net/u011622208/article/details/106230545