
Android NDK
ddssingsong
不念往昔,不畏将来,我是一个小小的探索者
展开
-
根据图片头标识判断图片格式
今日名言生命中最重要的是什么?我们真的要为了买间大房子,买台好车,买华美的家具,当季的衣服,提名牌包,吃大餐…而不断卖命工作吗?上班真的很辛苦,把40年最精华的青春岁月奉献给工作,用宝贵的人生去换回这些可能过几年就变成垃圾的物品,值得吗? ——《不上班也有钱》前言之前在做即时通讯的时候使用ndk编写了一个图片压缩库,在判断图片格式的时候卡了壳,本来打算用后缀名进行区分JPG和PNG或者B...原创 2019-11-20 14:48:34 · 286 阅读 · 0 评论 -
JNI AES加解密 c++和java互通详解
文章目录1. 前言2. JNI实现3. JAVA实现代码收录1. 前言AES加密标准又称为高级加密标准Rijndael加密法,是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准。AES的基本要求是,采用对称分组密码体制,密钥长度可以为128、192或256位,分组长度128位,算法应易在各种硬件和软件上实现。AES加密数据块和密钥长度可以是128b、192b、256b中的...原创 2019-10-26 15:31:47 · 2352 阅读 · 6 评论 -
使用clang编译openssl1.1.1d
使用clang编译openssl1.1.1dopenssl下载地址https://www.openssl.org/source/openssl-1.1.1d.tar.gzndk要使用r19以上ndk各个 版本的下载地址https://blog.youkuaiyun.com/u011077027/article/details/102706283使用clang编译 要设置ANDROID_API>...原创 2019-10-23 23:17:09 · 2705 阅读 · 1 评论 -
NDK各版本下载
翻不了墙的话,可以用迅雷下载最新版本r20https://dl.google.com/android/repository/android-ndk-r20-windows-x86.ziphttps://dl.google.com/android/repository/android-ndk-r20-windows-x86_64.ziphttps://dl.google.com/androi...转载 2019-10-23 17:19:36 · 5736 阅读 · 0 评论 -
Jni json处理 parson的高级使用
Jni json处理 parson的使用构造jsonextern "C" JNIEXPORT jstring JNICALLJava_com_dds_parson_Parson_test( JNIEnv *env, jclass clazz) { char *serialized_string = 0; // 包装一段jsonObject ...原创 2019-10-23 09:45:35 · 1337 阅读 · 0 评论 -
c语言JSON库 Parson的编译和使用
c语言JSON库 Parson的编译和使用最近一直学习ndk,Android肯定会用到json,这里介绍一个c语言写成的JSON解析库Parson介绍Parson is a lighweight json library written in C.c语言中使用的一个轻量级的json库特点:Full JSON supportLightweight (only 2 files)Sim...原创 2019-08-19 20:21:34 · 2539 阅读 · 0 评论 -
GmSSL Android 交叉编译 多平台
文章目录环境准备开始编译收录代码最近没事就编译了一下openssl的国密支持项目GmSSL,将其移植到Android端环境准备gcc , g++,make,python这些必须都有的,ndk的版本也是有限制的,之前我使用ndk17编译的版本某些方法会崩溃,也不知是什么原因所以我们选择ndk版本比较低的,比如,ndk-r10e-linux-x86_64,我暂时使用的是android-ndk...原创 2019-08-16 16:02:51 · 1537 阅读 · 0 评论 -
NDK 封装日志库 写到文件
文章目录需求定位定义方法和变量编写代码大功告成需求定位我们一般用jni都是封装一些库供Android调用,其中有一项就是日志打印,需要控制台输出,还需要文件输出日志,以便于查看客户端使用情况,如果有bug,也可以快速定位初步需求如下供c++代码调用控制台输出文件输出(可控制文件大小)可设置日志等级定义方法和变量定义日志输出等级enum { LOG_LEVEL_NON...原创 2019-08-14 18:15:15 · 897 阅读 · 0 评论 -
【NDK系列14】Cmake详解 CMakeLists.txt详细配置
文章目录1. CMake简介2. 基本命令3. build.gradle配置4. 注意事项1. CMake简介CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。从而达到跨平台的目的。Android Studio利用CMake生成的是ninja,ninja是一个小型的关注速度的构建系统。我们不需要关心ninja的脚...原创 2019-06-21 22:22:32 · 1614 阅读 · 0 评论 -
【NDK系列13】Makefile Android.mk Application.mk 详解
文章目录1. 什么是Makefile2. Makefile规则基本用法变量include文件搜索预定义变量自动变量条件语句输出信息3. Android.mk4. Application.mk配置APP_ABI架构我们在使用第三方库时,很多都提供makefile,我们需要读懂他们并且适当的修改他们,另外虽说现在google推荐使用cmake,但是如果遇见Android.mk还是需要能够读懂。1....原创 2019-06-21 17:47:07 · 792 阅读 · 0 评论 -
【NDK系列12】编译器 clang gcc g++
文章目录1. gcc/g++/clangclanggccg++2. 编译器过程1. gcc/g++/clang了解c/c++编译器的基本使用,能够在后续移植第三方框架进行交叉编译时,清楚的了解应该传递什么参数。clangclang 是一个C、C++、Object-C的轻量级编译器。基于LLVM (LLVM是以C++编写而成的构架编译器的框架系统,可以说是一个用于开发编译器相关的库)gcc...原创 2019-06-21 12:45:24 · 3987 阅读 · 0 评论 -
【NDK系列11】Java和c++交互 Jni初识
文章目录1. Java调用c++方法2. JNI数据类型3. C/C++反射Java反射调用方法反射修改变量4. JNI_OnLoad5. c++线程中调用Java代码JNI是一种本地编程接口。它允许运行在JAVA虚拟机中的JAVA代码和用其他编程语言,诸如C语言、C++、汇编,应用和库之间的交互操作。 不只是Android特有的东西1. Java调用c++方法静态加载so static ...原创 2019-06-21 11:00:27 · 463 阅读 · 0 评论 -
【NDK系列10】c++ 智能指针
文章目录1. shared_ptr2. weak_ptr3. unique_ptr4. 自定义智能指针自C++11起,C++标准库提供了两大类型的智能指针1. shared_ptr操作引用计数实现共享式拥有的概念。多个智能指针可以指向相同的对象,这个对象和其相关资源会在最后一个被销毁时释放。class A {public: ~A() { cout << "释放A" &l...原创 2019-07-08 13:21:42 · 462 阅读 · 0 评论 -
【NDK系列9】c++ 线程基本使用 线程同步
文章目录1. C++11线程2. POSIX线程线程属性分离线程调度策略与优先级线程同步条件变量线程,有时被称为轻量进程,是程序执行的最小单元。1. C++11线程#include <thread>void task(int i) { cout << "task:" << i << endl;}thread t1(task,100)...原创 2019-07-08 10:39:39 · 549 阅读 · 0 评论 -
【NDK系列8】c++ 异常
try { test1();}catch (const char *m) { cout << m << endl;}//自定义class MyException : public exception{public: virtual char const* what() const { return "myexception"...原创 2019-07-08 10:37:52 · 287 阅读 · 0 评论 -
【NDK系列7】c/c++文件与流操作
文章目录C 语言的文件读写操作C++ 文件读写操作C 语言的文件读写操作头文件 : stdio.h函数原型:FILE * fopen(const char * path, const char * mode);path: 操作的文件路径mode:模式模式描述r打开一个已有的文本文件,允许读取文件。w打开一个文本文件,允许写入文件。如果文件不存在,则会创建...原创 2019-06-27 13:22:13 · 728 阅读 · 0 评论 -
【NDK系列6】C++ 容器
文章目录容器序列式容器/顺序容器向量(vector)列表 (list)双端队列(deque)栈(stack)队列(queue)优先队列(priority_queue )关联式容器集合(set)键值对(map)红黑树容器容器,就是用来存放东西的盒子。常用的容器包括:数组array, 链表list, 树tree, 栈stack, 队列queue, 散列表hash table, 集合s...原创 2019-06-26 16:19:32 · 266 阅读 · 0 评论 -
【NDK系列4】c++基础1 字符串、c兼容、引用、命名空间
终于开始c++基础的整理了文章目录1. 输出2. 函数符号兼容3. 引用4. 字符串字符串操作C++ string类5. 命名空间代码1. 输出// C使用printf向终端输出信息// C++提供了 标准输出流 #include <iostream>using namespace std; // 1. c++输出 int time = 8; cou...原创 2019-06-20 14:18:50 · 376 阅读 · 0 评论 -
【NDK系列3】结构体和共用体
感觉c这块的内容真的无比枯燥,但在整理的过程中确实又学会了很多文章目录1、结构体声明和使用字节对齐2、共用体代码1、结构体声明和使用结构体是C编程中一种用户自定义的数据类型,类似于Java的JavaBean// 一般定义变量 student a struct Student{ char name[50]; int age;} student,a;//使用typedef定义...原创 2019-06-20 11:07:12 · 269 阅读 · 0 评论 -
【NDK系列2】指针、函数、预处理器
1、指针指针是一个变量,其值为地址。声明指针或者不再使用后都要将其置为0 (NULL)野指针 未初始化的指针悬空指针 指针最初指向的内存已经被释放了的一种指针int *a; 正规int* a;int * a;//因为 其他写法看起来有歧义int* a,b;具体使用//声明一个整型变量int i = 10;//将i的地址使用取地址符给p指针int *p = ...原创 2019-06-19 17:01:09 · 267 阅读 · 0 评论 -
【NDK系列1】基本数据类型和内存格局
文章目录基本数据类型格式化数组与内存布局代码作为一个Android开发者,怎能不会NDK开发,下面我们开始我们的NDK之旅怎么搭建环境我们暂且不管,随心而为基本数据类型1.signed—有符号,可修饰 char、int。Int是默认有符号的。2.unsigned—无符号,可修饰 int 、char整型字节取值范围占位int4-2,147,483,648 到 ...原创 2019-06-18 21:35:52 · 353 阅读 · 0 评论