- 博客(379)
- 资源 (60)
- 收藏
- 关注
原创 NDK10_NDK开发流程、JNI线程
NDK开发汇总一 NDK开发流程使用so库和头文件开发gradle指定开发平台,在defaultConfig目录里面ndk {abiFilters “armeabi”,“x86”}引入第三方库,在app.gralde中的android目录下 sourceSets.main {jniLibs.srcDirs = [‘libs’]jni.srcDirs = []}C++中找不到...
2020-03-21 21:37:43 204
原创 NDK09_静态注册与动态注册
使用一种数据结构JNINativeMethod来记录java native函数和JNI函数的对应关系移植方便(一个java文件中有多个native方法,java文件的包名更换后)
2020-03-21 17:24:09 262
原创 NDK09_JNI源码分析
NDK开发汇总一Java Native Interface我们知道cpu只认得“0101101”类似这种符号,C、C++这些代码最终都得通过编译、汇编成二进制代码,cpu才能识别。而Java比C、C++又多了一层虚拟机,过程也复杂许多。Java代码经过编译成class文件、虚拟机装载等步骤最终在虚拟机中执行。class文件里面就是一个结构复杂的表,而最终告诉虚拟机怎么执行的就靠里面的字节码说明...
2020-03-21 17:18:01 142
原创 NDK09_JNI编译过程及AS新建一个JNI项目
NDK开发汇总一 JNI原理1 编译cpu识别的是“0101”的字符c/c++ ========= 二进制文件编译:xxx.c ------> windows .obj 语法 Linux .o链接:.o -----> log.so2 编译规则:Eclipse GUN ----> Android.mkAndroid Studio: LL...
2020-03-18 23:55:39 215
原创 NDK08_JNI访问数组、引用、异常、缓存
NDK开发汇总一 JNI访问数组定义native方法生产.h文件public class JniMain { public native void giveArray(int[] inArray); }/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header...
2020-03-16 21:16:01 180
原创 NDK07_JNI读取和返回字符串
NDK开发汇总一 定义native方法,生成.h头文件public class Jni_Test { public native String chineseChars(String str);}ray_Jni_Test.h/* DO NOT EDIT THIS FILE - it is machine generated */#include "jni.h"/* Header ...
2020-03-15 11:24:07 353
原创 NDK07_JNI获取Java中类方法、构造函数
一 定义native方法,编译生成ray_JniTest.h头文件public class JniTest { int getRandomInt(int max) { return new Random().nextInt(max); } static String getRandeomUUId() { return UUID.randomUUID(...
2020-03-15 00:04:49 617
原创 NDK06_JNI实现native方法,获取类普通成员、类静态成员
NDK开发汇总一 定义Native方法public class JniMain { public String key = "key"; public static int count = 9; public native static String getStringFromC(); public native String getStringFromC2(...
2020-03-14 22:50:53 240
原创 性能优化07_电量优化:battery-historian工具使用
数据准备battery-historian工具需要使用bugreport中的Battery History先断开adb服务,然后开启adb服务adb kill-server 这一步很重要,因为当我们开发时做电量记录时会打开很多可能造成冲突的东西。为了保险起见我们重启adb。adb devices就会自动连接查找手机。当然也可以adb start-server重置电池数据收集数据,我...
2020-03-14 21:35:09 775
原创 NDK06_JNI理解、简单调用和基本数据类型
NDK开发汇总一 JNI理解JNI: java native interface使用环境:java api 不能满足我们程序的需要的时候。算法计算,图像渲染 效率要求非常高,当需要访问一些已有的本地库NDK:工具的集合。帮助开放者快速开放C/C++ 动态库的工具。二 JNI简单调用编写native 方法javah 命令,生成.h 文件java_类的全名_方法名...
2020-03-11 22:13:59 177
原创 NDK05_C:预处理指令、Define指令
一 预处理指令C 语言执行的流程:组成程序的每个源文件通过编译过程分别转换成目标代码(object code)各目标文件由连接器 捆绑在一起,形成一个单一而完整的可执行文件而编译过程又由如下过程组成:预处理器处理,在这个阶段,预处理器在源代码上执行一些文本操作。例如:用实际值代替由 #define指令定义的符号以及读入由#include指令包含的文件的内容。源代码经过解析,判断它...
2020-03-10 23:08:58 237
原创 NDK05_C:文件简单加密
NDK开发汇总一 文本文件加解密void encode(char normal_path[], char encode_path[]) { FILE * normal_fp = fopen(normal_path, "r"); FILE * encode_fp = fopen(encode_path, "w"); int ch; while ((ch = fgetc(normal_f...
2020-03-10 22:28:30 140
原创 NDK05_C:文件读写
NDK开发汇总一 读文件int test5() { //自己定义的文件地址 char *path = (char*)"C:\\Users\\PF0ZYBAJ\\Desktop\\files\\friends.txt"; FILE *fp = fopen(path, "r"); char buff[500]; while (fgets(buff, 50, fp)) { prin...
2020-03-09 22:30:57 229
原创 NDK04_C:const、typedef、union共用体
一 typedef就是别名,类似java 代理并没有创建新的数据类型,只是给现有类型创建了别名二 union
2020-03-08 16:42:12 182
原创 NDK04_C:结构体、结构体指针、 结构体中指针成员
NDK开发汇总一 结构体结构体: 一系列不同类型的数据的结合强调:类型!= 变量。 结构体名代表的只是结构体类型,没有内存空间。结构体中的成员可以单独使用二 结构体指针在结构体里面添加函数指针成员变量在结构体中添加结构体变量拓展:实现一个双向链表,存储的是随机数据(int | char *)。增删改查。并且对双链表数据进行排序三 typedef就是别名,类似java代理,并没...
2020-03-07 11:12:15 348 3
原创 NDK03_C:字符串及常见字符串函数
函数名: stpcpy功 能: 拷贝一个字符串到另一个用 法: char *stpcpy(char *destin, char *source);程序例:#include <stdio.h>#include <string.h>int main(void){char string[10];char *str1 = “abcdefghi”;stpcpy...
2020-03-05 21:21:06 256
原创 NDK03_C:函数指针、内存分配
NDK开发汇总===函数指针=函数名是一个函数的首地址,所以我们可以将函数赋值给对应类型的函数指针void 类型的指针:类似:java object指针变量都是4个字节。都是用十六进制表示。void* -》 int * / char * /float*下面两个表达式完全不同int(*calc2)(void a, void ); 函数指针int p(int a, int b); 一...
2020-03-05 21:18:34 153
原创 NDK02_C:指针、指针运算、多级指针与函数指针
从专业角度了解指针的作用会使用指针进行基本运算会使用指针作为函数的参数会使用指针数组和数组指针会使用二级指针会使用函数指针指针运算:*p 代表是它所指的地址上面的值的运算p++ 是p 指针变量++,结果就是:p指向它的下一个地址=======================================================数组与指针通过数组下标所能完成的任何操作...
2020-03-05 21:14:13 187
原创 性能优化19_HandlerThread+Loader
Android性能优化汇总1.减轻主线程的压力,提高UI的流畅度2.可以处理多个任务,开启一个线程起到多个线程的作用(looper共享)HandlerThread与Camera的能够Looper共享1 相机调用优化打开相机预览回调(编码)异步任务的Looper,使用的MainLooperHandler.handleMessage的执行,一定在它的Looper线程中onPrevie...
2020-02-27 18:09:05 239
原创 性能优化18_提升程序的启动速度及Splash页面设计
1.启动分为两种方式:1)冷启动:当直接从桌面上直接启动,同时后台没有该进程的缓存,这个时候系统就需要重新创建一个新的进程并且分配各种资源。2)热启动:该app后台有该进程的缓存,这时候启动的进程就属于热启动。热启动不需要重新分配进程,也不会Application了,直接走的就是app的入口Activity,这样就速度快很多2.如何测量一个应用的启动时间使用命令行来启动app,同时...
2020-02-27 18:02:11 197
原创 性能优化17_service进程防杀死
Android性能优化汇总Serviceservice:是一个后台服务,专门用来处理常驻后台的工作的组件。即时通讯:service来做常驻后台的心跳传输。1.良民:核心服务尽可能地轻!!!很多人喜欢把所有的后台操作都集中在一个service里面。为核心服务专门做一个进程,跟其他的所有后台操作隔离。树大招风,核心服务千万要轻。一、优先级进程的重要性优先级:(越往后的就越容易被系统杀...
2020-02-27 17:57:20 259
原创 性能优化16_热更新(编辑中)
Android性能优化汇总热修复阿里系:DeXposed。andfix从底层C的二进制来入手的。腾讯系:tinkerJava类加载机制来入手的。一 什么是热修复?一般的bug修复,都是等下一个版本解决,然后发布新的apk。热修复: 可以直接在客户已经安装的程序当中修复bug。bug一般会出现在某个类的某个方法地方。我们需要动态地将客户手机里面的apk里面的某个类给替换成...
2020-02-23 16:36:46 205
原创 性能优化15_安装包优化
Android性能优化汇总一个字:删!!删不了就尽量小一 常见的优化方式1.图片压缩图片:apk里面的资源图片 压缩图片svg图片:一些图片的描述,牺牲CPU的计算能力的,节省空间。使用的原则:简单的图标。webp:谷歌现在非常提倡的使用。保存图片比较小。VP8派生而来的。webp的无损压缩比PNG文件小45%左右,即使PNG进过其他的压缩工具压缩后,任然可以减小到PNG的28%...
2020-02-22 16:37:34 206
原创 性能优化14_多线程优化
Android性能优化汇总一 生产者与消费者模式public class ThreadTest { //产品 static class ProductObject { //线程操作变量可见 public volatile static String value; } //生产者线程 static class Produ...
2020-02-19 21:17:15 242
原创 性能优化13_数据传输效率优化
Android性能优化汇总一 FlatBuffer使用原有在做 Android 开发的时候,JSON 是最常用的数据序列化技术。JSON 的可读性很强,但是序列化和反序列化性能却是最差的。解析的时候,JSON 解析器首先,需要在内存中初始化一个对应的数据结构,这个事件经常会消耗 100ms ~ 200ms2;解析过程中,要产生大量的临时变量,造成 Java 虚拟机的 GC 和内存抖动,解析 2...
2020-02-15 16:23:37 646
原创 性能优化12_Android高清显示图片:哈夫曼算法
Android性能优化汇总一 原理同样的图片,在ios手机上显示的效果要比安卓手机上效果要好?图片处理引擎用的是pc上的图片处理引擎skia去掉一个编码算法—哈夫曼算法。采用定长编码算法**原因:**当时由于CPU和内存在手机上都非常吃紧 性能差,由于哈夫曼算法非常吃CPU,被迫用了其他的算法。需求:,随着安卓设备硬件水平的提升,可以在性能的安卓设备上使用一些比较耗费性能的算法,使得...
2020-02-08 19:46:26 530
原创 性能优化11_Bitmap压缩
Android性能优化汇总1 质量压缩原理: 通过算法抠掉(同化)了图片中的一些某个些点附近相近的像素,达到降低质量介绍文件大小的目的。注意: 它其实只能实现对file的影响,因为bitmap在内存中的大小是按照像素计算的,也就是width*height,对于质量压缩,并不会改变图片的真实的像素使用场景: 将图片压缩后保存到本地,或者将图片上传到服务器。根据实际需求来。实现代码 ...
2020-02-05 19:40:12 291
原创 性能优化11_Http请求缓存
Android性能优化汇总1 设置缓存Android系统默认的HttpResponseCache(网络请求响应缓存)是关闭的//这样开启,开启缓存之后会在cache目录下面创建http的文件夹,HttpResponseCache会缓存所有的返回信息 File cacheDir = new File(getCacheDir(), "http");//缓存目录 long maxSize = ...
2020-02-05 19:00:15 298
原创 性能优化09_WakeLock在下载任务中的简单使用
Android性能优化汇总性能优化09_WakeLock1 需求使用异步进行下载, 为了防止下载中断,使用WakeLock2 WakeLock实现public class WakeLockActivity extends AppCompatActivity { TextView wakelock_text; PowerManager pw; PowerManag...
2020-02-05 15:24:10 276
原创 性能优化10_JobScheduler源码
1 JobScheduler 实现获取 JobScheduler tm = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);两个方面分析:系统服务什么时候启动的寻找是否有JobSchedulerService的类结果:发现JobSchedulerService 存在JobSchedulerService...
2020-01-26 20:45:46 291
原创 性能优化10_JobScheduler
Android性能优化汇总一 JobSchedulerwake_lock虽然好用,但是也会导致cpu频繁的被唤醒,系统提供给我们更好的API去使用:JobScheduler二 主要代码自定义一个JobService@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)public class MyJobService extends Job...
2020-01-21 20:25:42 2399
原创 性能优化09_WakeLock
Android性能优化汇总一 什么是wake_lockwake_lock锁主要是相对系统的休眠而言的,意思就是我的程序给CPU加了这个锁那系统就不会休眠了,这样做的目的是为了全力配合我们程序的运行。有的情况如果不这么做就会出现一些问题,比如微信等及时通讯的心跳包会在熄屏不久后停止网络访问等问题。所以微信里面是有大量使用到了wake_lock锁。wake_lock:两种锁,一种计数锁;非计数锁...
2020-01-21 20:16:10 343
原创 性能优化08_电量优化:监控电量状态
Android性能优化汇总1 监控电量状态需求比如:360手机助手,当充上电的时候,才会自动清理手机垃圾,自动备份上传图片、联系人等到云端。原理通过监控电量状态来进行电量管理。获取手机的当前充电状判断只有当前手机为充电状态时 才去执行一些非常耗电的操作。是否充电代码 private boolean checkForPower() { //获取电池的充电状态 ...
2020-01-21 15:43:54 2720
原创 性能优化07_电量优化:battery-historian安装
工具开源地址: https://github.com/google/battery-historian根据gitbub上面介绍,Battery History工具的安装有两种方式:通过安装Docker环境来安装。(这种方式很简单,Docker真心好用,太彪悍了!)Docker是一种容器,一般用于云计算和大数据平台。提倡的一种思想就是:软件即服务。这句话不是盖的,一句话就可以将别人发布的doc...
2020-01-17 18:10:17 624
原创 性能优化06_渲染优化详解
Android性能优化汇总卡顿现象渲染功能是应用程序最普遍的功能,开发任何应用程序都是这样,一方面,设计师要求为用户展现可用性最高的超然体验,另一方面,那些华丽的图片和动画,并不是在所有的设备上都能刘畅地运行。我们来了解一下什么是渲染性能。首先,我们要知道Android系统每隔16ms就重新绘制一次Activity,也就是说,我们的应用必须在16ms内完成屏幕刷新的全部逻辑操作,这样才能达到...
2020-01-17 09:17:15 1288
原创 性能优化07_电量消耗的全过程分析
Android性能优化汇总设备忙着执行各种任务和各种复杂计算,秀自拍上传朋友圈图片、秀直播,设备硬件正在快速消耗电池电量来完成这些任务。很明显,你的任务处理的越复杂,电量就会消耗的越多和越快,一眨眼的功夫电量就消耗完了,用户的手机顿时变成个累赘的砖头了,这时候用户就会怀疑谁(哪个app)这么耗电,把它卸了!写出耗电量低的应用的关键是要透彻理解它的全部过程。在电子编程世界,这种硬件消耗电量 ...
2020-01-17 09:01:05 372
原创 性能优化09_布局优化及Hierarchy Viewer使用
Android性能优化汇总在我们的绘制渲染机制里面比较耗时的:1.CPU计算时间CPU的优化,从减轻加工View对象成Polygons和Texture来下手View Hierarchy中包涵了太多的没有用的view,这些view根本就不会显示在屏幕上面,一旦触发测量和布局操作,就会拖累应用的性能表现。1.如何找出里面没用的view呢?或者减少不必要的view嵌套。工具:Hierarc...
2020-01-16 08:26:33 268
原创 性能优化08_内存抖动和计算性能优化案例
1 BusyUIThread:Display an image.(图片RGB色值变换加载)private class SepiaFilterTask extends AsyncTask<Bitmap, Void, Bitmap> { @Override protected Bitmap doInBackground(Bitmap... bitmaps...
2020-01-15 17:44:43 217
原创 性能优化05_Allocation Tracker
Android性能优化汇总一 Allocation Tracker1 作用追踪内存分配信息。可以很直观地看到某个操作的内存是如何进行一步一步地分配的2 使用在Memory窗口中点击图中标红的部分,启动追踪,再次点击就是停止追踪,随后自动生成一个alloc结尾的文件,这个文件就记录了这 次追踪到的所有数据,然后会在右上角打开一个数据面板:查看内容Arrange by pack...
2020-01-13 21:05:42 290
责任链模式
2017-10-05
Prototype Pattern原型模式
2017-10-01
Suspenion滚动效果
2017-09-28
JNI编程指南与规范.zip
2020-05-06
makeFile编译.zip
2020-04-23
GNU_Make_3.80_cn.zip
2020-04-21
GifPlayerDemo(无bug).rar
2020-04-17
系统关键服务是如何进行守护.zip
2020-04-12
NDK20_线程轮询实现双进程守护
2020-04-09
NDK14_Linux基础:Shell命令,用户权限管理
2020-03-29
NDK14_C++基础:友元,模板方法,模板类,类型转换
2020-03-28
NDK13_C++基础:构造函数、拷贝构造函数、浅拷贝与深拷贝.zip
2020-03-26
Project2.zip
2020-03-26
Dn_lsn_9.zip
2020-03-22
NDK09_JNI编译过程及AS新建一个JNI项目
2020-03-21
lsn07_JNI获取String.zip
2020-03-15
安装包性能优化.zip
2020-03-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人