知识点记录

最近一些的总结

一、前言

这个篇文章是去年第4季度的总结,最近工作太忙了都忘记这个了,感觉又是一个季度没有学习了。

因为以前JNI开发的时候,我都需要去看别人的写法,虽然能改一些,更多是改不了,而且没有逼格,而且很多时候改的也没有底,所以这次通过移植lame、soundTouch、curl、openssl进行学习和锻炼。
这次涉及的知识点大概有:

  1. CMake
  2. MakeFile
  3. NDK
  4. GIthub Action
  5. Shell
  6. WSL
  7. Android Gradle Plugin 4.0+:prefab功能
  8. C++
  9. Git 之submodule
  10. gcc、llvm和clang
  11. PostMan

后面我对这些知识点进行简单介绍,同时我描述移植的相关过程和碰到问题。

二、知识点简单介绍

这里只做简单介绍,具体的建议自己去看,自己去搜。

1. Cmake

CMake是个一个开源的跨平台自动化建构系统,用来管理软件建置的程序,并不依赖于某特定编译器,并可支持多层目录、多个应用程序与多个库。 它用配置文件控制建构过程(build process)的方式和Unix的make相似,只是CMake的配置文件取名为CMakeLists.txt。

Cmake基础说明

当然基础是方便看懂,还有需要特殊的操作需要实战才能真正的学习了解。

2. MakeFile

Makefile是在Linux环境下 C/C++ 程序开发必须要掌握的一个工程管理文件。

MakeFile教程

配合Linux 下的工具 autoconf automake libtool 进行构建

执行./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或者是不是有编译的条件,它是个shell脚本,最后会生成一个MakeFile.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0wA7OXIg-1641522338355)(…/…/…/image/config生产makefile.png)]

执行make clean是用来清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件。

执行make是用来编译的,它从Makefile中读取指令,然后编译源代码、连接、生成目标文件、可执行文件。

执行make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。

大概过程.c文件-> 输出 .o 文件 -> 然后 .o 文化生成 静态库

3. NDK

  • NDK:(Native Development Kit),原生开发工具包是一组可以让您在Android应用中利用C和c++代码的工具。
  • LLDB:Android Studio 用于调试原生代码的调试程序。

原生共享库:NDK 从 C/C++ 源代码构建这些库或 .so 文件。

原生静态库:NDK 也可构建静态库或 .a 文件,而您可将静态库关联到其他库。

Java 原生接口 (JNI):JNI 是 Java 和 C++ 组件用于相互通信的接口。
如需了解更多相关信息,请查阅 Java 原生接口规范。

这些文章会告诉你如果编写脚本,如何去选择不同的clang, ~ 如果你想自己写脚本而不是抄别人。

4.Shell

Shell既是一种命令语言,又是一种程序设计语言 。

我们需要利用它来构建脚本。

很简单,如果有编程语言基础,然后只是改别人的话,甚至不需要去学。如果想自己写的话,还是要懂一点点,日常用的也不多。

相关学习-菜鸟教程

5. GIthub Action

GitHub Actions: 是 GitHub 的持续集成服务。

这里我提供一些示例。

当然还有更多骚操作需要去自己去了解,去使用

6. WSL

WSL是“Windows Subsystem for Linux”的缩写,顾名思义,WSL就是Windows系统的Linux子系统。

安装教程

为什么用它?

我是WIN电脑,虽然我可以通过github Action 进行配置Linux环境做一些但是,然后测试过程还是需要Linux 环境做一些准备。
github Action更适合做正确,重复的操作,不适合调试。

7. AGP(4.0+):prefab

AAR 库可以包含 Android Gradle 插件可以使用的原生依赖项。AGP 还能生成用于向使用者公开原生库的 AAR。

但是使用过程感觉有BUG,我不做过多介绍,自己看介绍。

Android Gradle 插件可以使用的原生依赖项

但是这个功能是真的香,好像只是目前还存在一些问题,所以还没有大规模的推广。

google-demo-prefab-curl-ssl

8. C++

这个我就不介绍了,我也是菜鸡,语法感觉不能,但是因为对库不了解,导致需要经常去搜索方法。

9. Git 之submodule

学习submodule,相信,你在多项目,多模块的构建上,会有更多的选择

Git Tools - Submodules

需要知道gitSubmodelues的作用、添加、删除、更新。

可以自己选择中文文档查看。

10. gcc、llvm和clang

gcc、llvm和clang

NDK R18之后默认clang 没有gcc了,不再支持mips

最低Android 16

STL (Standard Template Library/标准模版库)

NDK开发时,可以用下面方式指定c++运行库。

运行库在“c++_shared”,“c++_static”,“none”或“system”中选择其一,其中“c++_shared”,“c++_static”分别对应libc++的动态库和静态库。

10. PostMan

这里我用的mock,移植curl的时候用来测试get和post请求

三、实战案例

tip

文档内容都是点到为止,感兴趣的需要自己了解,去学。我这里只是提示一些知识点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TieJun~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值