
Android开发
handy周
Hello World...
展开
-
android中基于plt/got的hook实现原理
目录native-hook示例开始got全局符号表hook远程注入hook操作inline hook原理native内存泄漏检测常用方式概述由于android系统是基于linux内核开发的,因此我们日常编写的so文件,实际上也是一个ELF文件,类似于Windows下的PE文件,在开始了解native hook之前,我们要先了解一下ELF文件的格式,以及系统加载的一些过程。Lin...原创 2020-01-05 21:46:54 · 7404 阅读 · 6 评论 -
图解Android系统的启动过程
Android系统是基于Linux的,启动必须经历3个阶段,即:Boot Loader,Linux Kernel,Android系统服务,笔者今天就基于Android 8.1 系统源代码来分析一下启动过程。原创 2018-07-06 10:53:47 · 962 阅读 · 0 评论 -
图解ServiceManager的启动过程
笔者阅读了很多博客和相关书籍,自己也浏览了Android8.1系统源代码中关于ServiceManager的部分,有些书中称ServiceManager为Binder机制中的DNS服务器,负责某Binder服务在ServiceManager注册时提供的名称到底层Binder驱动分配的值的解析,我觉得这么理解倒也很贴切,在笔者整理关于ServiceManager的这篇博客时,发现想绕过Binder机制来单独来分析ServiceManager不太现实,而将Binder和ServiceManager合并一起来分析原创 2018-07-06 11:27:49 · 2836 阅读 · 1 评论 -
Android中Service的启动过程时序图
Android中Service的启动过程时序图参考: 《Android系统源代码情景分析》原创 2018-07-06 13:03:46 · 1078 阅读 · 0 评论 -
Android中Service的绑定过程时序图
Android中Service的绑定过程时序图参考: 《Android源代码情景分析》原创 2018-07-06 14:10:31 · 772 阅读 · 0 评论 -
Android中广播接收者的注册过程时序图
Android中广播接收者的注册过程时序图参考: 《Android系统源代码情景分析》原创 2018-07-06 22:37:36 · 836 阅读 · 0 评论 -
Android广播发送过程时序图
Android广播发送过程时序图参考: 《Android系统源代码情景分析》原创 2018-07-06 23:03:54 · 928 阅读 · 0 评论 -
Zygote和System进程的启动过程
Zygote进程的启动过程System进程的启动过程参考: 《Android源代码情景分析》原创 2018-07-07 15:08:43 · 304 阅读 · 0 评论 -
图解apk编译打包过程
第一步资源文件会被aapt工具处理为最终的resources.arsc,并生成相关的R文件。第二步如果本地存在.aidl文件,则生成相对于的Java Interfaces类文件。第三步Java编译器会将R.java,源代码文件,aidl相关的接口文件,统一编译成.class文件。第四步将dex工具对生成的.class文件以及第三方库代码进行处理,生成.dex文件。第五步接下来会...原创 2018-10-15 17:03:32 · 561 阅读 · 0 评论 -
关于Android中多module使用fat-aar合并的坑
逛掘金很久了,之前注册过邮箱账号,但是现在每次登录,都要求重置密码,改了也没用,很绝望,重新注册了一个账号。 今天第一次在掘金上分享,废话不多说,直接开始正题。概述简单介绍一下项目情况,笔者做这个项目快两年了,之所以有这篇文章,源于项目的需求,因为项目除了公司内部使用,还需要抽取sdk给第三方合作公司使用,并且不同的合作方可能会对sdk作改动,A公司可能不要录屏功能,B公司可能只要视...原创 2018-06-20 21:59:24 · 8574 阅读 · 3 评论 -
Android进程间通信小结
前言今天把进程间通信的内容复习整理下,算是温故而知新吧。小结目录使用Bundle 我们通常在使用Activity,Service,Receiver的时候,都是支持在Intent中传递Bundle数据的,由于Bundle实现了Parcelable接口,所以它可以通过序列化与反序列化在多个进程之间进行传递数据。<!--使用bundle方式--><a...原创 2018-04-30 00:11:34 · 191 阅读 · 0 评论 -
android再谈屏幕适配之smallestwidth适配
1.概述Android发展至今,功能越来越多,越来越强大,不过碎片化的问题也是众所周知的越来越严重,如果是做大众应用,我相信屏幕适配肯定是我们不可回避的一个问题,当然了,网上的适配方案有很多,比如:Google的百度比布局 AutoLayout Android适配方案…等等,大家如果有兴趣,可以去看看。 本方案实际上是第三种方案的一个演进!!!2.在谈论屏幕适配之前,首先要知...原创 2018-04-29 15:45:16 · 1940 阅读 · 0 评论 -
Linux下的GIF录制
简书排版 http://www.jianshu.com/p/a81cf3953937本机OS: Ubuntu 14.04 x64Windows下录制gif图片的工具很多,Linux下录制的工具比较少 之前一直都是用Android Studio自带的工具录制成视频,也有使用OBS录制视频,然后使用FFMPEG库的命令进行转换,最终的结果就是图片体积很大,优快云的图片上传都有大小限制,后来放到G原创 2016-08-11 23:55:08 · 1880 阅读 · 1 评论 -
ubuntu移植jsoncpp到Android平台
简书排版 http://www.jianshu.com/p/02ccd73c927e本机OS: Ubuntu 14.04 x64NDK开发模块的时候,如果涉及到网络请求,类似json数据传递的时候,有现成的第三方json库可以移植,后台C++开发中使用的比较多的是jsoncpp,今天记录一下jsoncpp移植到Android平台的过程cmake编译此方法并非标准的NDK项目 采用的是cmake交原创 2016-08-11 23:38:49 · 1434 阅读 · 0 评论 -
Android中Context的用武之地
简书排版 http://www.jianshu.com/p/2d7d2d3dd0c2简单的把常用的地方枚举一下 功能 Application Service Activity Show Dialog No No Yes Start Activity Yes(New Task) Yes(New Task) Yes Start Service Ye原创 2016-09-04 22:36:50 · 436 阅读 · 0 评论 -
Android中Scheme跳转协议
Android中Activity之间的跳转我们可以直接使用显示或者隐式意图跳转都可以 但是实际开发过程中可能会碰到这类问题 比如App做活动,通过推送过来的消息告诉客户端跳转到某某界面,客户端本地自然不能写死,不然就麻烦了 今天小结一下开发过程中碰到的这类问题的解决方式: 我们都知道网站都是通过URL的形式访问的 同样的我们App也完全可以通过这种方式进行跳转 举个小例子<a href=原创 2016-07-12 20:52:09 · 11876 阅读 · 0 评论 -
ubuntu启动器快捷方式
简书地址 http://www.jianshu.com/p/db46273bee77今天重装ubuntu之后发现 Android Studio一直无法固定到启动器上 网上查找资料 进入目录/usr/share/applications执行命令sudo gedit studio.desktop然后输入指定内容[Desktop Entry]Name=Android StudioComment原创 2016-10-25 19:56:56 · 489 阅读 · 0 评论 -
Ubuntu下Android Studio无法输入中文
重装Ubuntu 16.04系统之后,安装好搜狗输入法,发现Android Studio不能输入中文 网上搜寻尝试,如下方案可行 在android-studio/bin目录下找到studio.sh在第二行添加export XMODIFIERS=@im=fcitxexport QT_IM_MODULE=fcitxexport GTK_IM_MODULE="fcitx"原创 2016-11-02 10:31:01 · 1183 阅读 · 0 评论 -
Gradle发布项目到JCenter仓库
简书地址:http://www.jianshu.com/p/fd2f2eca63b7 过程比较简单,记录一下发布的流程,方便后续查阅1.注册登录就不多说了JCenter地址 2.新建一个项目GradlePro,同时新建一个module 3.编辑项目的根目录中的build.gradle文件buildscript { repositories { jcenter()原创 2017-06-01 11:22:49 · 484 阅读 · 0 评论 -
路由方案之ARouter源码分析
目录前言利用Intent跳转利用scheme完成跳转正式开始ARouter的探索小结前言去年底公司内部作技术分享的时候,笔者分享过一次ARouter源码的分析,最近在整理草稿箱里的内容,顺便将它分享出来,记录一下。利用Intent跳转我们平常开发过程中,会有各个页面的跳转情况,比如LoginActivity跳转到 HomeActivity的时候,我们最常见的使...原创 2018-04-15 00:49:28 · 1270 阅读 · 0 评论 -
android系统源代码单独编译应用程序
通过前面的文章,Android系统源代码编译成功后,我们开始植入第一个应用程序到系统中去。 首先进入到系统源代码目录,在packages/experimental目录下 新建项目AndyCode,目录结构如下: MainActivity.java源代码package com.byhook.andy;import android.app.Activity;import andro...原创 2018-04-16 01:30:17 · 2484 阅读 · 0 评论 -
注解该如何使用
简书排版 http://www.jianshu.com/p/27dab01b29aa目录简介元注解一个例子1.简介注解是JDK 1.5之后引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。2.元注解Java目前只内置了三种标准注解,以及四种元注解。@Target:表示注解该用于什么地方。可能的Elem原创 2016-08-19 00:47:01 · 1001 阅读 · 0 评论 -
android高仿今日头条小视频转场切换效果
可以先看看今日头条效果功能分析点击列表上的一个item,该item会放大,最后直接全屏播放小视频,刚开始看上去,以为是个共享元素的转场动画,后来想到,共享元素要在android 5.0以上支持,而今日头条显然不会只支持5.0版本以上笔者想到的一种方案就是进入Activity之后,在onCreate的生命周期回调,,计算缩放的动画参数,思路如下1.点击列表上的item,获取该view的...原创 2018-10-17 19:03:20 · 2524 阅读 · 3 评论 -
ubuntu下使用nginx和nginx-rtmp-module配置直播推流服务器
本来准备在centos服务器上搭建的,因为笔者工作系统是ubuntu,因此直接在本机上搭建,更方便快捷,配置过程比较简单,记录一下。目录配置环境安装obs-studio开始第一次推流安装vlc播放器开始拉流配置环境配置环境配置环境操作系统:ubuntu 16.05nginx-1.15.5版本同步nginx-rtmp-module代码git clone https://gi...原创 2018-10-31 08:29:27 · 3472 阅读 · 1 评论 -
android平台下基于OpenSL ES实现音频录制功能
我们日常在处理音频录制的时候,大部分情况下都是使用AudioRecord录制原始的PCM数据,但是音频相关的处理通常都是在native层进行的,今天笔者要记录一下在native层通过OpenSL ES来完成音频的录制。原创 2019-01-31 23:38:09 · 2228 阅读 · 0 评论 -
图解ServiceManager的获取服务过程(上)
网上有很多关于ServiceManager和Binder的文章,但是老感觉理解起来不是那么顺畅,笔者基于Android 8.1系统源代码,从最简单的获取服务开始了解Binder进程间通信,由于篇幅原因,这里分开两部分来了解,上部分主要集中在Java层,下部分主要集中在Native层。原创 2019-02-01 00:07:05 · 3237 阅读 · 2 评论 -
android平台下基于ffmpeg采集Camera数据编码成H.264推流到RTMP服务器
音视频实践学习android全平台编译ffmpeg以及x264与fdk-aac实践ubuntu下使用nginx和nginx-rtmp-module配置直播推流服务器android全平台编译ffmpeg合并为单个库实践android-studio使用cmake编译ffmpeg实践android全平台下基于ffmpeg解码MP4视频文件为YUV文件android全平台编译ffmpeg支持...原创 2018-11-29 22:36:11 · 3576 阅读 · 3 评论 -
android全平台编译libyuv库实现YUV和RGB的转换
libyuv是Google开源的实现各种YUV与RGB之间相互转换、旋转、缩放的库。它是跨平台的,可在Windows、Linux、Mac、Android等操作系统,x86、x64、arm架构上进行编译运行,支持SSE、AVX、NEON等SIMD指令加速。原创 2018-11-25 12:57:46 · 9381 阅读 · 6 评论 -
YUV420P、YUV420SP、NV12、NV21和RGB互相转换并存储为JPEG以及PNG图片
YUV420和RGB转换存储为BMP和JPG以及PNG图片原创 2018-11-24 22:50:36 · 22662 阅读 · 2 评论 -
android平台下OpenCV之从零开始
android平台下OpenCV之从零开始原创 2019-03-10 11:18:58 · 327 阅读 · 1 评论 -
android平台下OpenCV之灰度图转换
android平台下OpenCV之灰度图转换原创 2019-03-14 21:43:43 · 1054 阅读 · 1 评论 -
android平台下OpenGL ES 3.0给图片添加黑白滤镜
android平台下OpenGL ES 3.0给图片添加黑白滤镜原创 2019-04-06 15:34:33 · 1934 阅读 · 1 评论 -
android平台下基于cmake编译链接ffmpeg-3.4.x的32位和64位(armeabi-v7a和arm64-v8a)静态库
android平台下基于cmake编译链接ffmpeg-3.4.x的32位和64位(armeabi-v7a和arm64-v8a)静态库原创 2019-06-30 23:47:25 · 2553 阅读 · 3 评论 -
从源码中看Handler、Looper、MessageQueue
从源码中看Handler、Looper、MessageQueue原创 2019-01-11 14:15:32 · 212 阅读 · 0 评论 -
RxJava 2.x 之图解创建、订阅、发射流程
从一个例子开始创建过程订阅过程发射过程小结从一个例子开始Observable.create(new ObservableOnSubscribe&amp;amp;lt;Integer&amp;amp;gt;() { @Override public void subscribe(ObservableEmitter&amp;amp;lt;Integer&amp;am原创 2018-10-26 19:15:31 · 863 阅读 · 0 评论 -
RxJava 2.x 之创建操作符
最近几天想把rxjava2的操作符都整理一下,看到网上的很多文章都总结的很好,但是时间久了依然会忘记。创建操作符just如果一次只需要发送几个数据,可以使用just操作符参考:https://maxwell-nc.github.io/android/rxjava2-2.html...原创 2018-10-24 12:06:35 · 237 阅读 · 0 评论 -
RxJava 2.x 之过滤操作符
最近几天想把rxjava2的操作符都整理一下,看到网上的很多文章都总结的很好,但是时间久了依然会忘记。过滤操作符filter操作符filterfilter操作符,可以自己设定任意的规则来过滤数据Observable.just(1, 2, 3, 4, 5, 6, 7) .filter(new Predicate&amp;lt;Integer&amp;gt;() { ...原创 2018-10-24 12:25:14 · 1151 阅读 · 0 评论 -
RxJava 2.x 之聚合操作符
聚合操作符startWith操作符startWithArray操作符concat/concatArray操作符merge/mergeArray操作符concatDelayError/mergeDelayError操作符zip操作符combineLatest操作符combineLatestDelayError操作符reduce操作符count操作符collect操作符st...原创 2018-10-24 12:35:49 · 577 阅读 · 0 评论 -
RxJava 2.x 之条件操作符
条件操作符all操作符ambArray操作符contains操作符any操作符isEmpty操作符defaultIfEmpty操作符switchIfEmpty操作符sequenceEqual操作符takeUntil操作符takeWhile操作符skipUntil操作符skipWhile操作符allall操作符主要用来判断所有元素是否满足某个条件Observable...原创 2018-10-24 13:38:52 · 496 阅读 · 0 评论 -
RxJava 2.x 之变换操作符
变换操作符-map操作符-flatMap操作符-flatMapIterable操作符-concatMap操作符-switchMap操作符-cast操作符-scan操作符-buffer操作符-toList操作符-groupBy操作符-toMap操作符mapmap操作符作为基本的转换操作符,可以把每一个元素转换成新的元素发射Observable.just(0, 1, 2, ...原创 2018-10-24 13:59:28 · 300 阅读 · 0 评论