自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (4)
  • 收藏
  • 关注

原创 Android Jni开发细节总结

上篇文章介绍了Android studio下Cmake配置编译开发jni总结,这篇介绍JNi开发的细节。Android Jni开发中比java开发不论是在编译阶段还是运行阶段都有更多的细节点需要注意,稍有不慎就会不断地进入填坑模式,扫码加入日志,不断慢慢调试,下面是个人最近开发中所遇到细节整理如下:1、认识JNI中的JavaVM和JNIEnv对象在标准的java平台下,每一个Proce...

2021-01-20 13:48:52 278

原创 Java 锁整理

整理下java相关锁的概念,加强理解公平锁/非公平锁公平锁是指多个线程按照申请锁的顺序来获取锁。 非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先级反转或者饥饿现象。 对于Java ReentrantLock而言,通过构造函数指定该锁是否是公平锁,默认是非公平锁。非公平锁的优点在于吞吐量比公平锁大。 对于Synchroni...

2020-06-23 14:54:30 39

原创 Fragment使用细节总结

fragment.setRetainInstance(true)from layout 和 add fragment区别

2020-06-23 14:53:06 65

原创 Android Studio下Ndk开发踩过的坑以及解办法决

Android studio在2.2之后是开始兼容ndk的开发,尝鲜用来本地开发,各种坑,不兼容。之前用得好好的,一个升级AS或者NDK版本都会一不小心导致了编译失败,或者成功之后,加载不成功。故随手笔记记录下自己踩过的坑,也方便其他人查询。 Trap One : Caused by: java.lang.UnsatisfiedLinkError: dlopen f...

2019-11-09 14:10:28 6174

原创 Android UI开发细节Api使用技巧总结

收集平时UI开发中使用到或者学习笔记做个收录,好记性不如烂笔头:持续更新中。。。。1、图片渐变技巧 第一种:叠层退去,逐渐显示底层 第二种:直接组合使用,各取一部分组成一个,利用canvas.clipRect来截取 第三种:叠层慢慢增加并且和底层取个交集:取两层绘制交集,显示上层。 PorterDuffXfermode mode = new Port

2019-11-09 14:07:57 2605

原创 插件Manifest注册组件支持

现有的技术方案主要分几种:1)基类代理Activity同步反射方式子类2)Hook Instrumentation来同步创建插件Activity实例,记录在ActivityRecord队列中3)HooK ,同步AMS对生命周期的回调,这回调有两种方案(1)动态代理方案,Hook替换binder类型的接口(2)Hook handler机制CallBack接口,在handle回调时候 在c...

2018-11-09 16:30:59 287

原创 插件化框架原理设计

架构图实现原理简介如上架构图所示,为了实现组件Activity、Service、ContentProvider的生命周期由系统AMS管理,而采取了Hook 方案,而不需要框架来实现入侵式的替换组件的父类来通过反射的方式同步生命周期。对于插件Apk加载生成PluginApk对象由PluginManager进行统一管理插件的生命周期:校验、脱壳解密、安装、加载解析、启动、检查更新等。对于Ap...

2018-11-09 16:15:09 1521

原创 插件Apk 资源加载机制

系统安装过的Apk资源加载原理可以参考下之前写的文章:Android App启动时Apk资源加载机制源码分析一句总结要表达的是Apk资源都是由AssetManager来加载维护的,核心代码 // AssetManager创建 AssetManager assets = new AssetManager(); // resDir can be null if...

2018-10-12 15:19:48 319

原创 插件化so库加载原理及实现

前言在正常开发中,我们只负责调用方法加载so,整个实现交给系统去完成,那插件中要加载so库要做什么单独的处理么,在不清楚的情况下,先看下系统是怎么实现的,我们直接利用系统来完成加载要怎么做。系统加载so库流程源码分析先看下开发中加载so库的方式如下,基于Android-25:static { System.loadLibrary("ymm_log");}在看下System类的...

2018-09-27 17:40:26 1074

原创 Android mmap技术实现高性能日志库

1、C/C++实现高性能,Buffer缓存来减少IO次数,Native开发内存占用低,写入内存速度快,不卡顿 2、内存映射mmap实现crash,或进程退出时的未保存的log,避免丢失 数据 3、保存本地,需要的时候日志上传辅助定位 4、密文保存日志,防止数据泄露

2018-07-25 19:29:08 2046

原创 Android嵌套滑动-Behavior方案实战及细节注意

笔者在2013年就收到Android嵌套滑动的UI效果需求,当时都是直接从监听滑动事件分发做起,至今再次收到这种类似的需求,一直以来想更新下之前的实现方式,相对于Behavior封装过的方案而言毕竟不够优雅,现就介绍前后两种方案。老方案的思路 这种方式是底层,其他的封装(包括behavoir)都是基于此,直接重写父类(ViewGroup)的事件分发机制:dispatchTouchEvent...

2018-06-07 10:59:24 4855 1

原创 Android性能优化方面概述

个人总结性能优化中需要考虑的方面以及简单总结,毕竟相关内容很多,就不详细展开具体内容,但持续更新中,方便自己或大家查阅1、UI卡顿优化 1)布局优化:减少层级(merge),代码重用(include),延迟初始化(viewstub) 2)绘制优化:频繁刷新,过度绘制,超过16ms 3)内存优化:频繁创建对象导致:内存抖动、内存溢出或泄露导致频繁GC 4)...

2018-03-07 12:34:11 270

原创 Glide缓存机制

Glide缓存机制Glide缓存非常先进,很灵活,很全面,总体上来讲有内存缓存和磁盘文件缓存。缓冲机制概括来讲就是读缓存以及是写入缓存的机制。而Glide读缓存时机就是先内存缓存查找再到磁盘缓存查找最后网络,写入缓存则就是在获取到原始source图片之后,先写入磁盘缓存,再加入内存缓存。每个缓存查找都是通过key来查询,一般都是直接用下载url来作为key,那Glide的key呢。直接看下

2018-01-11 13:25:51 8377

原创 Android Studio填坑之路

Android Studio是个强大Android开发工具,每个新版本的发布都有带来新的惊喜和爽快,但是同时也带来惊吓和糟糕,这边文章就是收集开发中遇到的细节问题以及解决方法。

2017-12-28 17:26:46 262

原创 《深入探索Android热修复原理》代码热修复总结

阿里巴巴对热修复技术的发展路线: 1、基于Xposed而来的Dalvik下java method hook技术-Dexposed框架,仅限于Dalvik虚拟机 2、兼容到Art虚拟机的Andfix,同样是基于底层的结构替换方案 3、进而发展就是hotfix,基于Andfix,有所提高,但都没有对资源和so实现修复能力 4、接下来就是这篇主角:17年6月提出的新方案-非入侵时Soph...

2017-12-25 11:11:20 709 1

原创 手机dump内存Odex格式反编译

在上篇文中介绍了如何dump内存,生成的文件为odex格式,需要进一步反编译才能查阅。先是通过baksmali工具转成smali格式文件,然后再通过smali工具把smali格式逆向dex。

2017-11-27 20:37:05 1028

原创 IDA动态调试技术及Dump内存

最近研究SO文件调试和dump内存时,为了完整IDA调试起来,前后摸索了3天才成功,里面有很多坑和细节,稍微不注意,就一直排行,需要理解每步骤的作用意义,否则就会觉得教程不对,要详细的教程可能找不到,大部分都是简单介绍,没有提醒细节和易忽视的点动态调试步骤,顺序严格如下事先准备工作 1、要求root手机或者直接用模拟器 否则没有权限启动android_server 2、IDA在6.6以上版

2017-11-20 21:22:08 6363

原创 Android studio下Cmake配置编译开发jni总结

在Android Studio在2.2版本实现了Ndk开发新的编译工具Cmake,比之前ndk-build方式来得更方便快捷,可以直接运行app时就生成了so并打包到apk中,省去了之前开发ndk时出现的很多麻烦。例如没有代码提示,自动填充,开发起来都是一个个手写,出现错误只能是编译打包阶段提示,还必须先生成so再替换原文件运行。现在通过cmake开发起来得到大大提升,下面介绍这段时间ndk jn...

2017-10-18 13:47:52 3011

原创 Sdk界面UI开发自动适配屏幕技巧

前两篇分别是关于Sdk安全方面以及开发注意事项-Sdk迭代开发设计需要考虑的方面总结, 这篇继续讲Sdk开发相关内容-Sdk界面UI开发中图片自适配。在apk开发中我们不会太关注这个图片适配,因为系统会自动适配。这里就是要从图片加载到内存时,具体如何适配的屏幕分辨率先讲起,那还要从图片bitmap加载出来具体大小是多少讲起。

2017-09-07 21:57:25 815

原创 《Android彻底组件化方案实践》读后分析

项目发展到一定程度,随着人员的增多,代码越来越臃肿,这时候就必须进行模块化的拆分。在我看来,模块化是一种指导理念,其核心思想就是分而治之、降低耦合。而在Android工程中如何实施,目前有两种途径,也是两大流派,一个是组件化,一个是插件化。

2017-08-01 17:28:34 2286

原创 Sdk迭代开发设计需要考虑的方面总结

Sdk开发设计与Apk开发不同的地方还是有些明显的不同之处,明显的区别是使用对象不一样,Sdk是基于开发者使用的,都是有一定的开发水平,相对于Apk用户而言基本是大众用户,做得好不好不仅仅是运行起来性能、稳定行以及功能,还需要顾忌开发者调用是否方便、嵌入成本、更新维护成本,因为Sdk是作为一个库给对方使用,但又不是开源的,还得注意保护知识产权,个人认为一个不错优秀的sdk开发需要注意如下方面:

2017-07-19 17:26:55 2383 4

原创 Android实现资源动态加载的两种方式

这是Android Apk源加载机制原理分析以及动态加载实现系列文章 的最后一篇。经过前两篇的介绍之后,相关基础都讲的差不多了,现在要实现自己项目中的资源加载框架,这里提供两种方式,区别在于由谁来加载资源。1、利用系统加载资源Apk 2、主动手动实现资源的加载

2017-06-25 20:41:49 5337 1

原创 Res目录下资源如图片文件和xml文件资源如何被加载显示出来

紧接上一篇 Android App启动时Apk资源加载机制源码分析 分析App启动时是如何加载初始化资源之后,接下来分析开发过程中调用显示资源View的Api接口(如设置背景图片)具体是如何把启动时加载好的图片显示出来。上篇讲的启动时候加载资源只是把资源初始化准备好,而这篇是将具体实际显示资源时候,是如何把启动时准备好的res资源加载出来供View显示。

2017-06-25 16:21:53 1462

原创 Android App启动时Apk资源加载机制源码分析

在Andorid开发中我们要设置文字或图片显示,都直接通过Api一步调用就完成了,不仅是我们工程下res资源以及系统自带的framwork资源也可以,那这些资源打包成Apk之后是如何被系统加载从而显示出来的呢。

2017-06-23 11:27:32 5351

原创 Android Apk资源加载机制源码分析以及资源动态加载实现系列文章

Android系统中运行Apk时是如何对包内的资源进行加载以及我们开发中设置相关资源后又是如何被加载出来,这个系列我们可以学习系统加载资源的机制原理,然后我们再巧妙的利用学习系统加载技巧来打造我们自己的动态资源加载机制实现。

2017-06-21 15:41:17 833

原创 Android Animation动画原理源码分析

Android 平台提供了三类动画,一类是 Tween 动画-Animation,即通过对场景里的对象不断做图像变换 ( 平移、缩放、旋转 ) 产生动画效果;第二类是 Frame 动画,即顺序播放事先做好的图像,跟电影类似。最后一种就是3.0之后才出现的属性动画PropertyAnimator ,这个分享的是第一类动画实现原理。

2017-06-19 17:14:39 2576

原创 Android 图片着色Tint后向兼容DrawableCompat库实现原理分析并简化封装

前言:之前在Android Ui开发中实现ImageView背景图片点击变色,往往会要求UI设计师提供两种不同颜色的图片分别作为selector的不同选中状态下的背景图,可以想象就是仅仅颜色不一样,就需要一个相同大小的图片,这样不仅仅浪费资源,加大res下图片资源体积,而且还需要重新加载一个新图片而导致增加系统负担。所以如果可以利用一种颜色的图片就可以实现出来多种颜色,对这个图片进行着色,实现不同种

2017-06-16 16:16:43 1025

原创 Android5.0通过JobScheduler特殊场景下周期性执行后台任务

JobScheduler是Android5.0 开始引入了一个新系统服务。它将后台任务调度直接交给系统服务(JobSchedulerSevice)管理,并且可以设置许多约束条件,如周期调度,延迟调度,网络连接,电源插入,还有AndroidL引入的空闲模式,在条件符合的情况下,系统服务BindService的方式把应用内Manifest中配置的JobService启动起来。

2017-06-09 15:15:56 2145 2

原创 Android 双卡识别Imsi以及副卡发送短信总结

Android5.0系统才开始提供对双卡识别支持,提供SubscriptionManager类来完成对双卡相关设备信息的读取。在5.0之前只能根据机型来适配来获取副卡Imsi,本文重点介绍5.0之后的Api以及适配。

2017-06-08 17:41:46 6310

原创 Android多网络环境(wifi,mobile)下强制在某个网络(mobile)访问服务端以及适配

在wifi和移动数据网络同时开启之下,现在需要wifi开着的情况下,强制通过移动数据网络发送网络请求,以及在机型和低版本适配。

2017-06-06 19:52:42 18072 7

原创 Android中Touch事件分发源头的源码分析及内部类扮演的角色

Android上层实现java代码实现,仅仅实现功能还不能体现实力,还要写出一手看起来优雅的代码,今天总结下java内部类如何可以优雅的实现。外围类的窗口及桥梁我们从实际列子出发,看下Android源码中如何通过作为内部类实现Touch事件完整地传递由fromwork层到WMS到ViewRootImpl通过PhoneWindow联系到Activity再到布局View呢。

2017-06-05 22:36:56 389

原创 Android 机型适配问题整理

Androi问题机型适配问题都是老生常谈的话题了,其一出生就注定了成为开发人员心中的疼,随着安卓手机品牌发展众多,一款产品应用发布没有经历过充分的机型适配就上线,接下来的一幕就是开发人员收到了满屏的错误日志发来,这个是某某统计软件搜集到的应用崩溃日志,赶紧适配,开发人员当场就会懵逼。下面就自己这几年应用开发经验遇到过的机型适配问题做个罗列,也欢迎读者提供所遇到的机型适配问题以及解决方案。小...

2017-06-03 18:30:20 10734 3

原创 Android 常驻进程保活自启动方案总结

Android常驻进程就是进程一直存在,即使被系统外者其他软件人为杀死也能够自启,这种需求一般就是用来常驻接受推送消息时,如何保证进程不被杀死,实时收到推送的消息,与后台保持着链接。那如何保持进程常驻呢,总结了如下方案:提高进程优先级以及等级Android系统进程管理对进程分等级,当内存不足时按照等级排序从最低等级最先杀死用来回收内存,进程等级排名如下1.前台进程( FOREGROU

2017-06-01 22:36:29 4493

原创 谈Android接入Sdk开发的安全性方案

Android 接入sdk是指某公司作为能力提供方经常以接入Sdk形式来暴露能力供用户使用,这样的能力对公司来说是财富实现的资本,不能被外界窥探或者破解成免费使用,那下面来分析下有哪些危害以及解决方案。裸sdk的危害裸Sdk是指sdk未进行加固,直接简单的通过反编译工具就可以看到其实现,现在混淆不算加固,但很多sdk就仅限于混淆而已,就没有其他安全措施了,这样就很容易暴露如下问题:

2017-05-28 19:55:38 4581

原创 Android View刷新原理Invalidate()和PostInvalidate()源码分析

一般Ui控件使用来简单开发时,并没有注意到系统如何刷新,而当我们自定义View或开发复杂的view时,就需要主动调用Invalidate或者postInvalidate等来通知系统刷新绘制UI,刷新视图。那接下来一个个来剖这两个Api的具体实现。Invalidate()invalidate最后调用到invalidateInternal函数,把view的相对尺寸和相关状态设置传递 void in

2017-05-28 12:30:36 1062

原创 Android多进程Process开发总结-优点与缺陷

Androiod多进程为何使用多进程 什么情况下,我们会去想到使用多进程呢? 就我个人开发实践中就多次使用了Android多进程机制,如项目中的推送业务开发,提出要求如下: - 不能影响主业务的代码稳定运行 - 不能占用主业务的进程内存 - 不受主业务进程生命周期影响,独立存在和运行 要满足这3个需求下,不由就会想到在应用内开辟一个新进程单独给推送业务使用,因为其特点明显:

2017-05-27 15:49:44 8606 1

原创 Android Animation动画原理源码分析(内容已经转移到另一篇)

Android 平台提供了三类动画,一类是 Tween 动画-Animation,即通过对场景里的对象不断做图像变换 ( 平移、缩放、旋转 ) 产生动画效果;第二类是 Frame 动画,即顺序播放事先做好的图像,跟电影类似。最后一种就是3.0之后才出现的属性动画PropertyAnimator ,这个分享的是第一类动画原理。

2017-05-19 16:38:21 328

原创 Android 自定义键盘输入内容监听

为何要监听输入内容? 一般正常的监听键盘输入内容,都是用Editext控件来实现用户的输入内容显示。但是特殊输入类型,如现在的方格密码输入,必须把内容准确放入方格内,这时候就必须主动操作输入显示这块,而不是全部交给Editext来替代

2017-05-18 09:28:50 11305 1

原创 Android硬件开发系列一指纹识别

Android6.0系统才开始支持指纹识别,不过也有些手机定制rom过早就提供相关api来支持,这里不展开,主要介绍兼容包处理以及api使用细节和总结。

2017-04-21 17:40:32 3166

原创 2016MDCC移动开发者大会参后感

今年MDCC 2016移动开发者大会主题就是《从移动时代走向AIR智能时代》,其中AIR分别是指人工智能、物联网和AR,VR。参加这次大会给自己最震撼的感受就是让自己感受到正处于时代的变迁中,见证新的革命时代正在迈着大步伐向我们走来,让我们展开怀抱和展望这一时刻。   正如吴军在《智能时代》的观点“第4次工业革命是智能革命”。人工智能经过60年的发展,第3次由机器学习和深度学习发展推向高潮。在

2016-10-18 14:08:22 517

多米画廊效果

多米的画廊源码,反编译过来的,但能看到画廊部分

2013-10-16

SMSPOPU-android

sms开发,相关代码,部分源代码,请供参考一起研究讨论

2013-03-24

抽离v4包中DrawableCompat中着色兼容实现封装而成一个类TintDrawable

抽离v4包中DrawableCompat中着色兼容实现封装而成一个类TintDrawable,简易使用,从而减少项目资源大小

2017-06-16

android design support

android 开发同行们,福利来了,最新android开源支持类库

2015-07-28

空空如也

空空如也

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

TA关注的人 TA的粉丝

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