自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (1)
  • 收藏
  • 关注

原创 ButterKnife源码阅读

ButterKnife 框架结构butterknife:提供绑定的入口,传入view以及target目标butterknife-annotations:定义了一系列如:view,onclick等参数、方法、成员变量等类型的运行时注解信息butterknife-compiler:封装了注解处理器(核心)butterknife-reflectbutterknife-runtime1. ...

2020-02-27 12:23:53 236

原创 EventBus-3.1.1源码阅读

1. 注册及查找事件1.1 EventBus初始化getDefault: 通过单例模式获取实例,同时里面采用Builder模式构造部分初始化参数,方便定制部分配置信息//Builder模式,在EventBusBuilder里面完成一些默认的初始化操作private static final EventBusBuilder DEFAULT_BUILDER = new EventBusBu...

2019-12-11 11:25:32 206

原创 内存优化(三)Android对象池使用

文章目录概述Android Object PoolsPools源码解析:Pools结合Builder模式使用案例:使用总结和注意事项概述由内存优化(一)浅谈内存优化中看出,内存优化不仅要从防止内存泄露入手,也要注意频繁GC卡顿,内存抖动以及不必要的内存开销造成的内存需求过大或者内存泄露。而避免内存无用开销就必须理解Android开发中的一个重要原则——对象复用。对象复用在我们开发中使用的案例...

2019-01-03 11:41:05 1171

原创 内存优化(二)如何避免内存泄漏

文章目录一、不同生命周期导致的内存泄漏解决办法二、非静态内部类持有对象导致的内存泄漏1. 非静态内部类调用外部类的方法的2. 内部类是如何持有外部类对象?3. 如何处理非静态内部类内存泄漏问题一、不同生命周期导致的内存泄漏前面有分析了内存泄漏的原因,本该被回收的对象被占用,得不到回收便会内存泄漏。总归到底的原因还是对象引用在类之间传递,它们的生命周期不同,导致回收时发生问题。举个简单的例子:...

2019-01-02 15:49:06 513 1

原创 Thread源码剖析

对于线程Thread类的使用,可以说是java语言必备,但你是否真正意义上去剖析过他的内部结构,本文从概述的几个问题出发,一起进行源码阅读(本文基于Android-27中的Thread源码)文章目录概述一、创建使用1. 初始化2. start方法3. run方法二、Thread阻塞1.join方法2.sleep方法3.sleep与join的区别三、Thread终止1.stop方法2.inte...

2018-12-26 17:51:54 711

原创 内存优化(一)浅谈内存优化

本系列文章,主要是总结我对Android开发过程中内存优化的理解,很多东西都是平常的习惯和一些细节问题,重在剖析优化的原理,养成一种良好的代码习惯。概述既然谈优化,就绕不开Android三个内存相关的经典问题:OOM内存泄漏频繁GC卡顿导致这三个问题的原因:OOMApp在启动时会从系统分配一个默认的堆内存,同时拥有一个堆内存最大值(可以动态申请这个大小),这个Max Hea...

2018-12-20 16:39:39 1834

原创 UI性能优化(一)Overdraw排查和调优

文章目录概述与案例排查技巧一:查看是否过度绘制排查技巧二:通过Hierachy View或者Layout Inspecot查看布局层级Overdraw优化策略一、至尊超薄去除window背景绘制上下级同色图层间保持最少图层绘制原则学会选择布局控件merge标签的使用二、不见不画,待见再画1. 动态代码加载2. ViewStub标签的使用Android的渲染机制优化是重中之重,大家都知道,但是问...

2018-12-20 16:38:24 1369

原创 Gradle快速构建(三)多渠道打包及隐藏自动签名

文章内容:配置不同打包环境下(包括run运行的debug打包模式)指定签名,配置本地jks_config文件,自动编译签名包还记得当初刚撸android时,在一家小公司用的eclipse开发,遇到一个发布bug,自己在运行debug打包模式测试都没有遇到过,但是通过jks签名包出来就升级安装出问题了,着实蛋疼,可想,配置一个正确的开发和测试环境的重要性,当我们打测试包时,总不能一直给人家d...

2018-12-08 16:58:22 1860

原创 Gradle快速构建(二)gradle构建NDK编译环境

在我的文章如何使用AndroidStudio-Cmake中有说过在gradle配置jni环境,本章主要更加细致的介绍如何配置一些自定义的选项,比如选择ndk版本编译,编译不同的库,cmake编译下配置引用不同的C++ libd等。文章目录一 mk编译下自定义ndk编译指令1. 获取NDK路径2. 执行ndk编译指令3. 指定静态库的引用路径二 cmake编译选项配置1.配置AS编译方式2.配...

2018-12-08 16:58:12 3166

原创 Gradle快速构建(一)AS项目构建配置进阶

用Gradle构建Android Studio项目,默认会有一个基础配置,那么在这个基础上,我们通过将变量聚合在一起,既明了又简洁。文章目录一、配置源码编译路径配置资源目录二、配置编译版本和依赖版本为全局变量三、打包相关的一些配置四、Gradle编译兼容性配置1. lint检查2. 依赖仓库一、配置源码编译路径我们都知道,AS会有默认的源码编译路径,比如java的在main/java下,...

2018-12-08 16:57:58 2212

原创 RK3399 Camera调用USB摄像头(一)测试篇

新买的开发板RK3399外接USB摄像头,查看了下,RK3399 Android系统rom是支持底层UVC驱动的,将一些测试结果和测试demo记录下来,以免他人踩坑,如果有帮到你,请点个关注和start,谢谢一、USB摄像头连接信息打印1. Camera启动USB摄像头当打开不存在相机时warn错误警告,监听该异常处理即可。几个错误问题:相机分辨率不支持问题,打开报错(系统相机默...

2018-12-05 11:26:38 16335 1

原创 【Android源码篇】 HandlerThread使用和源码分析

HandlerThread作为子线程管理常用类,他自带封装的Looper处理Message,可以说是十分实用。子线程调度任务,方便我们在子线程中做更多的花样。介绍:HandlerThread内部实现很简单,主要用在需要进行子线程调度任务的时候创建,但是想要完善熟悉原理,你必须熟悉Handler的内部原理实现。请看我的文章:【Android源码篇】 最详细的AsyncTask源码剖析看完本...

2018-12-01 10:11:25 2216

原创 【Java】单例设计模式

  一、什么是单例设计模式单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。简单的说来就是:确保一个类中只有唯一的实例,并提供给外界访问!对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正...

2018-11-28 15:55:06 3541 1

原创 【Java】文如何制作帮助文档

 如何制作帮助文档: (1)写一个类(2)加入文档注释(3)通过javadoc工具生成即可 javadoc -d 目录 -author -version ArrayTool.javaps. 输入后会自动如果原文件中没有myhelp文件夹,会自动生成一个myhelp文件夹从名称为  index.html索引页面开始观看。会发现并无换位操作,私有的不提取,属...

2018-11-28 15:54:58 3711

原创 【Android开发问题】Attribute "title" has already been defined 异常解决

Attribute “title” has already been defined 异常解决问题描述:在开发过程中,会存在引用jar包时,自定义的attrs.xml中属性与jar包中属性冲突的情况:碰到这个问题,我在网上查找了许多方法,包括stackoverflow等,好像没有查到很好的解决方式(汗!我的查找能力有待提高),在此我总结了下这次问题的解决办法:第一、更改自定义的属性名称,比如tit

2018-11-28 15:54:49 4564

原创 【Android音视频】Android—YUV格式深入浅出

文章目录Android音视频—YUV格式深入浅出概述一、什么是YUV?YUV的 planar和packed的差别?YUV,YCbCr,YPbPr写法的含义怎么理解YUV后面的三个数字呢?YUV中stride跨距的含义?二、一些常见YUV格式的区别1. YUV422—包含如:YUYV、UYVY、YUV422P2. YUV420—包含如:YV12,YU12、NV12、NV21、YUV420SP、I42...

2018-11-28 15:54:26 9084 1

原创 【Android源码篇】 深入剖析Handler内部原理

文章目录一、Handler介绍二、Handler源码剖析1. Handler构造函数:2. 创建Looper对象和mQueue消息队列3. sendMessage4. removeMessages5. post(Runnable r)6. dispatchMessage和handlerMessage三、Looper源码剖析1. myLooper方法2. Looper.prepare()创建对象3....

2018-11-24 18:07:44 3934

转载 AS项目运行正常,但查看代码飘红the file size exceeds configured limit.

原文:https://blog.csdn.net/qq_32227681/article/details/73331002Android Studio 项目运行正常,但查看代码飘红,看着烦,按ctrl 点击飘红的类,进不去找到该类的包名全路径,一步一步打开该类,发现Android studio上有提示:the file size exceeds configured limit.意思就是:文...

2018-11-21 17:56:23 3024

原创 【NDK】移植Live555到Android

文章目录一、Live555简绍二、编译live555三、解决报错四、总结有个IPC的项目有用到live555,简单编译了一下live555的动态库,作为笔记存用,因为也没碰到什么难点,有问题可以联系我一、Live555简绍Live555作为一个经典的流媒体开源框架,相信如果你要用到,肯定也有初步了解,我的项目中用到他的RTSP Server。一起来看看它的支持:The “LIVE5...

2018-11-21 09:56:05 4591

原创 【NDK】移植openssl到Android

一、下载&编译静态库1.下载源码和脚本下载解压,修改脚本名称为小写mkdir opensslcd openssl/wget https://www.openssl.org/source/openssl-1.1.1f.tar.gztar -zxvf openssl-1.1.0f.tar.gzcd openssl-1.1.1f/wget https://wiki.openssl...

2018-11-20 18:06:23 4661

原创 【BUG】You have tried to change the API from what has been previously approved.

Android 编译时碰到问题:You have tried to change the API from what has been previously approved.To make these errors go away, you have two choices:You can add “@hide” javadoc comments to the methods, et...

2018-11-15 21:36:49 4165

原创 系统开发(三)——完善关联Camera源码和debug调式

文章目录一、AS关联Camera2二、debug调式三、总结由上一篇文章在AS导入源码阅读成功,查看如framework层,HAL层源码都没有什么问题,但是当我们来开发系统相机时,发现还是有一大串的bug,发现是R文件引用问题导致,今天就来解决这个问题。一、AS关联Camera2上一篇一个小问题:导入的依赖配置保存失败,由于AS没有Android.iml和Android.ipr权限...

2018-11-13 17:35:07 3187 1

原创 【Android源码篇】 最详细的AsyncTask源码剖析

文章目录一、简单使用和介绍(会的同学可以直接跳过看源码分析)二、源码剖析1.首先从AsyncTask初始化开始2. mWorker中实现call方法,并调用doInBackground3.看Handler构成的消息传递机制4.接着看execute方法5.接着看线程池sDefaultExecutor和execute方法三、总结最近在总结Android线程优化相关的知识,顺便说说AsyncTask...

2018-11-13 11:18:27 3093 2

原创 IMX6Q Android 7.1.2 IDEGen生产Android.iml

<?xml version="1.0" encoding="UTF-8"?><module version="4" relativePaths="true" type="JAVA_MODULE"> <component name="FacetManager"> <facet t

2018-11-08 18:34:52 3654

原创 【BUG】no permissions (user in plugdev group; are your udev rules wrong?

ubuntu 18接开发板子,发现adb这个提示,查看:felix@felix-desktop:~/wd500g/eyemore-i.mx/android_n7$ lsusbBus 001 Device 002: ID 8087:8001 Intel Corp.Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus...

2018-11-08 16:42:15 3579

原创 【Android源码篇】系统开发(二)——AndroidStudio如何调式源码

我的系统开发文章:一、Android源码篇】系统开发(一)——ubuntu编译I.MX6Q源码7.0二、文章目录一、简介与环境二、IDEGen的使用(AS下)1. 参考它的README文档,必读——注意点:2. 编译IDEGen三、导入源码1. 导入我们需要的库2. 关联源码跳转3. OKOK的四、总结在上一篇中,编译了IMX6Q Android 7.0的源码,由于我们的需求是Camer...

2018-11-08 15:58:19 3553

原创 【Android音视频】ubuntu编译ffmpeg动态库

文章目录参考文章1. 编译环境2. 下载ffmpeg到本地,配置编译脚本3. 问题修复(限于该环境配置):4. 如何裁切5. ffmpeg配置不同扩展功能参考文章https://blog.csdn.net/leixiaohua1020/article/details/47008825 雷霄骅1. 编译环境NDK:android-ndk-r15cFFMPEG: ffmpeg-3.4...

2018-10-30 21:54:47 3743

原创 【Android】Crosswalk 开发浅析

最近的项目中,有用到phonegap,并需要展示一些需要高效渲染的网页,同情况下,IOS跑起来轻松无比,但是Webview。。。。(泪奔),在焦头烂额的机型及版本适配中,发现了Crosswalk项目。一、 在使用 Crosswalk框架之前,我们必须得了解 Crosswalk1. Crosswalk是一款开源的Web引擎,其基于 Chromium/Blink 的应用运行环境,对于混合开...

2018-10-29 09:42:47 7532 3

原创 【Android源码篇】RK3399调式问题—卡刷的luUbuntu系统再刷Android系统出现关机重启黑屏问题&Unable-to-open-'-sys-an

卡刷的luUbuntu系统再刷Android系统出现关机重启黑屏问题,串口调式Log:Service 'media'(pid 3545) killed by signal 9Unable to open '/sys/android_power/request_state':init:....init:....重新卡刷,发现问题依然存在查看wiki文档说明,应该是eMMC的系统损坏了,...

2018-10-28 14:06:29 4404

原创 【Android音视频】Onvif-IPC开发(二)——JAVA版本onvif服务器构建Onvif-IPC

文章目录Android端实现Onvif IPC开发:本篇内容简介:一、作为Server端实现被发现功能二、在Android上搭建一个Server用于接收和响应Client请求####三、当当当当当!,完成上面的服务框架搭建,启动服务接下来我们要搭建RTSP服务器,即可以在标准工具中进行播放,请查看我的下一篇文章:《Android端实现Onvif IPC开发(三)——在Android端搭建RTSP服...

2018-10-28 14:06:20 6417 2

原创 【Android音视频】Onvif-IPC开发(一)——gSoap-onvif移植NDK

文章目录Android端实现Onvif IPC开发:阅读说明(必读)参考文档:一、本篇项目简介二、环境搭建三、测试工具Android jni工程给出参考文档:四、gSoap生成代码中的主要的坑Android端实现Onvif IPC开发:《Android端实现Onvif IPC开发(一)——gSoap移植NDK尝试》《Android端实现Onvif IPC开发(二)——在Android端搭建服...

2018-10-28 14:05:33 5984 3

原创 【Android】Android-键盘遮盖界面布局问题

一、在解决Android输入法键盘弹出问题是,我们先来了解几个常用的api<activity android:windowSoftInputMode= "A"'>A=“stateUnspecified” 依赖系统或者主题去设置键盘弹出A=“stateHidden” 控制键盘不自动弹出A=“stateUnchanged” 保持上一个Activity的键盘弹出属性设置A=“...

2018-10-28 14:04:58 3578

原创 【Android】Android外接音源设备之小蜜蜂坑

在开发直播APP时,有用到小蜜蜂外接音源,总是会存在声音噪音很大或者很多手机声音很小的问题:适配的几个手机都测试了,总是得不到解决方案,因为在外接小蜜蜂MIC时,会用到转接线最开始考虑的是否转接线存在国标和美标的问题,结果发现确实有影响但是还是存在问题,声音并非完美,客户使用在即,急的不行,晚上找到技术老大,叫来硬件工程师一起联调,最后在转接线上加了阻尼,虽然存在很大问题,但总算稍微能用了...

2018-10-28 14:04:52 6394

原创 【Android】关于魅族机型适配问题

一、魅族hold 下拉悬停功能的屏蔽魅族自带的下拉悬停功能有时用起来体验太差,Android开发中很多地方会碰到与设计想冲突的地方一般如:ListView ScrollView 等可下滑控件操作是会碰到,如需选择性屏蔽可通过如下API实现: * .setOverScrollMode(View.OVER_SCROLL_NEVER);二、魅族SmartBar适配魅族的SB...

2018-10-28 14:04:45 4267

原创 【Android】问题集锦

1. Release apk打包问题:Lint found fatal errors while assembling a release target.问题解决:多个activity注册问题,或者部分警告在release中编译不过的问题android { lintOptions { checkReleaseBuilds false // Or, if...

2018-10-28 14:04:35 3309

原创 【开发】Git指令操作和使用—听说指令看起来比客户端骚

文章目录前言:一、Git下载三、Git关联&推送&回退&删除&克隆操作以github为例四、Git项目分支创建管理四、在具体项目协作中如何整合版本好了,一些常用的指令操作已经学完了,快去练习一下吧。git的操作远远不止这些,在开发过程中可以参考他的中文指导文档:前言:Git作为分布式版本控制系统,是我们工作和开源代码平台项目管理最火的工具之一,基本上是每个入职的...

2018-10-26 11:48:17 3299

原创 【Android】android 8.0系统API问题适配和学习

文章目录一、Android 8.0遇到的问题1. 线程中断:2. invalid pthread_t 0x2243df2546 passed to libc二、改动:(这一切都是基于targetApi=26)1. 在新版的gradle要求中,软件在2018年底google市场强制要求,软件targetApi=26,一些简单的代码改动,如依赖包写法等,不提2. 后台执行限制:这一点很重要,andro...

2018-10-26 11:45:51 4193

原创 【Android源码篇】系统开发(一)——ubuntu编译I.MX6Q源码7.0

文章目录参考文档:一、Android刷机的组件含义二、搭建Android源码编译环境I.MX6Q Android端编译流程1. 编译命令(Ubuntu 16.04下编译)部分实用指令repo指令参考文档:Google源码编译介绍自己动手编译Android源码[I.MX6Q][Android6.0.1_r3]之源码获取及编译一、Android刷机的组件含义Android 启动流程...

2018-10-26 11:42:27 3521

原创 【Android音视频】Android TS流数据解析和回调

文章目录一、TS流简介1. **什么是TS流 :**2. **在学习TS流是需要了解的部分定义:**3. **解析TS流的重点在于理解他的表结构:解析TS流的流程主要是通过对应的PID去分布解析我们需要的信息,从而截取出对应的有效数据**4. **解析流程:具体的对应结构在我上面列出的参考文章中都讲解的非常详细,本文主要写一个简单流程引导,做到一个快速集成到项目的目的**二、TS流解析代码三、数据...

2018-10-26 11:37:55 7987 4

原创 【Android】代码混淆常用&高级技巧

文章目录一、在项目工程目录下创建混淆文档:proguard-rules.pro二、在项目gradle文档中声明:三、部分高级混淆的规则:android apk防护的方法有很多,代码混淆只能算是一个门槛,还有包括Dalvik字节码加密,DEX加壳保护,DEX指令动态加载保护和高级源码混淆保护等等,有空再慢慢尝试学习,目前一些比较火的第三方混淆方案:还有网上一个很有意思的混淆字典:写这篇文章作为一...

2018-10-26 11:29:25 4315

AndroidIPC_apk

Android端实现的基于Onvif的IPC,https://www.jianshu.com/p/e241fc0e23f2

2018-06-11

空空如也

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

TA关注的人

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