自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (2)
  • 收藏
  • 关注

原创 Android NDK 从入门到精通(汇总篇)

注意:本文为各博客汇总分类的链接贴,方便大家快速寻找和学习相应的内容。未完待续,佛性更新中~~专栏地址 Android NDK 开发,从入门到精通NDK 入门 NDK 开发第一课:环境配置与第一个 JNI 程序JNI 知识 JNI 数据类型和类型描述符 JNIEnv 和 JavaVM JNI 接口大全 JNI 静态注册...

2018-07-30 19:40:46 44564 2

原创 Android Studio gardle 配置 ndk 指定 ABI: abiFilters 详解

一、ABI 是什么ABI 是 Application Binary Interface 的缩写。不同 Android 手机使用不同的 CPU,因此支持不同的指令集。CPU 与指令集的每种组合都有其自己的应用二进制界面(或 ABI)。 ABI 可以非常精确地定义应用的机器代码在运行时如何与系统交互。 您必须为应用要使用的每个 CPU 架构指定 ABI。典型的 ABI 包含以下信息:机...

2018-07-29 16:19:09 111315

原创 Android Studio build.gradle 中配置 cmake,及各 arguments 详解

一、简介 在 Android Studio 2.2 以上的版本,推荐使用 CMake 来编译工程里的 C/C++ 代码(包括 JNI 部分)。 一般来言,我们只需要关注和编写 CMakeLists.txt 即可,至于 CMake 如何编译,以及使用的什么样的配置选项是不怎么关心的(会有一系列默认的配置)。不过,如果你需要更改或者定制化一些编译的选项,你就需要了解一下如果在 gra...

2018-07-29 15:37:37 22579

原创 C/C++ 命令解析:getopt 方法详解和使用示例

一、简介getopt() 方法是用来分析命令行参数的,该方法由 Unix 标准库提供,包含在 <unistd.h> 头文件中。 二、定义int getopt(int argc, char * const argv[], const char *optstring); extern char *optarg;extern int optind, opterr, o...

2018-07-28 15:58:42 49908 9

原创 CMakeLists.txt 语法介绍与实例演练

一、Cmake 简介cmake 是一个跨平台、开源的构建系统。它是一个集软件构建、测试、打包于一身的软件。它使用与平台和编译器独立的配置文件来对软件编译过程进行控制。二、常用命令1. 指定 cmake 的最小版本cmake_minimum_required(VERSION 3.4.1)这行命令是可选的,我们可以不写这句话,但在有些情况下,如果 CMakeLists.tx...

2018-07-25 14:12:18 236378 61

原创 TEE(可信执行环境)介绍

一、背景    Android 平台作为一个开放的软件平台,正在越来越多的受到恶意软件的攻击,体现在用户的敏感数据被窃取、数字版权被滥用、移动支付存在重大安全隐患等等。因此,需要在 Android 平台中引入一个可信执行环境,用来进行数字版权管理(DRM : Digital Rights Management )、移动支付和敏感数据保护。 二、定义    TEE 是 Trusted...

2018-07-24 15:49:49 18608

原创 求图片的平均亮度

图像相关开发中,有时我们需要知道和了解图片的 亮度 这一信息,例如判断图片是否曝光严重过度或者太黑什么都看不清。那么怎么去获取到图片的 平均亮度 这一信息呢?一、YUV 图片 一般相机的原始数据类型就是 YUV 格式,这种格式下很容易求得亮度,因为它的 Y 通道就是亮度通道,我们只需要求得 Y 通道的平均值就可以了。 由于 YUV 图片前 width * he...

2018-07-24 15:09:51 11429

原创 so 动态库崩溃问题定位(addr2line与objdump)

一、需求分析so 的崩溃并不像 Java 代码那么好定位,我们通常看到的就只是 so 中的一大段崩溃的堆栈信息。那么我们怎么通过这个堆栈信息来定位我们的问题呢? 二、addr2line1. 介绍Addr2line 工具(它是标准的 GNU Binutils 中的一部分)是一个可以将指令的地址和可执行映像转换成文件名、函数名和源代码行数的工具。一般适用于 debug 版本或带有...

2018-07-24 14:44:19 26933 9

原创 求 yuv( nv12 / nv21 ) 图片各通道的均值

一、简介    YUV,是一种颜色编码方法。常使用在各个视频处理组件中。“Y”表示明亮度(Luminance、Luma),“U” 和 “V” 则是色度、浓度(Chrominance、Chroma)。    NV21 和 NV12 是 YUV 的两种具体编码形式,以一个 2*2 像素大小的图为例,则排列如下:    NV21:YYYYVUVU    NV12:YYYYUVUV 二...

2018-07-23 16:25:16 2097

原创 shell 语法:分支语句、循环语句、test 命令、运算符

shell分支语句、循环语句、test 命令、运算符

2018-07-23 14:35:50 796

原创 shell 语法:echo命令、printf命令、重定向、文件包含、函数

shell echo命令、printf命令、重定向、文件包含、函数

2018-07-20 15:32:47 4651

原创 shell 语法:变量、字符串、数组、注释、传递参数与特殊字符

shell变量、字符串、数组、注释、传递参数与特殊字符

2018-07-19 22:16:22 2721

转载 vim 操作指令图解

如下图所示: 这是之前看到的一张图,感谢原作者。

2018-07-19 21:40:42 380

原创 JNI 静态注册和动态注册

一、前言    当执行一个 Java 的 native 方法时,虚拟机是怎么知道该调用 so 中的哪个方法呢?这就需要用到注册的概念了,通过注册,将指定的 native 方法和 so 中对应的方法绑定起来(函数映射表),这样就能够找到相应的方法了。    注册分为 静态注册 和 动态注册 两种。默认的实现方式即静态注册。 二、静态注册1. 定义    通过 JNIEXPORT...

2018-07-13 15:18:07 12126 1

原创 NDK 开发之 Android LOG 工具类

一、背景介绍一般在 JNI 层输出 Android log 时,不会直接使用原生的接口,而是做一层简单的封装。我们希望输出一种带有 文件名、方法名、行号 等信息的 Android log,可以帮组我们更加快速的定位 log 是在何处输出的。并且,我们希望可以很轻松的控制 log 的打开和关闭。 二、LogUtils.h 工具类如果想要关掉 log,注释掉 #define DE...

2018-07-13 14:09:25 6117 4

原创 JNI 方法大全及使用示例

一、说明这里介绍的函数大多是 NDK 开发中常用的函数,但并不是全部,内容稍多,基本可以满足我们的开发需求了,建议通过目录索引来找需要了解的。 这里的函数都是 JNIEnv 操作的相关函数,JNI_OnLoad 等 JavaVM 的方法不在这里介绍。 JNI 有 C、C++ 两种代码风格,即:   C风格:(*env)->NewStringUTF(env, "Hellow Wo...

2018-07-12 16:04:38 16072 3

原创 浅谈 JNIEnv 和 JavaVM

一、概念1. JavaVmJavaVM 是虚拟机在 JNI 层的代表,一个进程只有一个 JavaVM,所有的线程共用一个 JavaVM。2. JNIEnvJNIEnv 表示 Java 调用 native 语言的环境,是一个封装了几乎全部 JNI 方法的指针。JNIEnv 只在创建它的线程生效,不能跨线程传递,不同线程的 JNIEnv 彼此独立。native 环境中创建的线程...

2018-07-10 15:07:22 13267

原创 Android底部导航栏,三种风格和实现

一、效果图展示    如果动图没有动的话,也可以看下面这个静态图    以下挨个分析每个的实现,这里只做简单的效果展示,大家可以基于目前代码做二次开发。二、BottomNavigationView    这是 Google 给我们提供的一个专门用于底部导航的 View,你只需要在新建 Activity 的时候选择 “Bottom Navigation Activity”,IDE 就会自动使用 Bo...

2018-07-07 12:36:53 138664 44

原创 JNI基础:JNI数据类型和类型描述符

一、简介    在 JNI 开发中,我们知道,Java 的数据类型并不是直接在 JNI 里使用的,例如 int 就是使用 jint 来表示。那么,就如我们来认识一下这些数据类型吧。 二、基本数据类型  Java数据类型  JNI本地类型  C/C++数据类型 数据类型描述   boolea...

2018-07-03 15:57:37 19031

原创 NDK开发第一课:环境配置与第一个JNI程序

一、JNI 与 NDK1. JNI 是什么    JNI 是 Java Native Interface 的缩写,即 Java 的本地接口。    目的是使得 Java 与本地其他语言(如 C/C++)进行交互。    JNI 是属于 Java 的,与 Android 无直接关系。2. NDK 是什么    NDK 是 Native Development Kit 的缩写,是 ...

2018-07-03 14:09:56 14783 1

sshdroid.apk

为Android设备开启一个SSH的服务,方便远程连接

2021-07-13

设计模式之禅第二版

《设计模式之禅 第2版》PDF资源。 本书是第2版, 在写作中吸取了读者对上一版的许多意见和建议, 修订了一些代码的变量、 类、 方法名称, 以更加符合自然语言; 删除了部分有争议的内容(如单例模式的垃圾回收问题) ; 修改了一些常用的名词, 确保与编程人员的习惯相匹配。 希望通过这些改进, 给读者提供一个更完美的设计模式盛宴, 弥补上一版中的诸多不足。

2018-06-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除