![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android开发
文章平均质量分 79
疯狂的程序员丶
这个作者很懒,什么都没留下…
展开
-
Flutter完整开发实战详解(一、Dart语言和Flutter基础)
前言 在如今的 Fultter 大潮下,本系列是让你看完会安心的文章。本系列将完整讲述:如何快速从0开发一个完整的 Flutter APP。同时也会提供一些Flutter的开发细节技巧,并针对开发过程中可能遇到的问题进行填坑。 系列文章分为三篇,第一部分是基础篇(针对Dart语言和Flutter基础),第二部分是App快速开发实战篇,第三部分是细节填坑篇。 笔者相继开发过 Flutt...原创 2019-03-13 21:02:06 · 366 阅读 · 0 评论 -
抛弃EventBus,用LiveDataBus代替—Android消息总线的演进之路
前言对于Android系统来说,消息传递是最基本的组件,每一个App内的不同页面,不同组件都在进行消息传递。消息传递既可以用于Android四大组件之间的通信,也可用于异步线程和主线程之间的通信。对于Android开发者来说,经常使用的消息传递方式有很多种,从最早使用的Handler、BroadcastReceiver、接口回调,到近几年流行的通信总线类框架EventBus、RxBus。An...原创 2019-01-25 19:25:38 · 1923 阅读 · 0 评论 -
Retrofit源码解析
序言做Android开发的小伙伴都知道,现在最流行的网络框架就是RxJava+Retrofi+OkHttp。今天我们就一起来学习一下Retrofit内部如何实现。文章将会从下面几个点展开介绍:一、 如何使用Retrofit二、 Retrofit源码解析1. 构建Retrofit对象2. 创建Service实例3. 执行一次请求的具体流程三、总结如何使用Retro...原创 2019-01-15 16:59:24 · 244 阅读 · 0 评论 -
AndroidAPP数据采集SDK设计
背景介绍 随着流量红利逐渐消失,移动互联网时代正式进入了一个新的阶段,这个阶段要求我们对有限的流量进行精细化运营、深度挖掘加工,从而使流量进行有效转换和不断增长。 完备的前端监控系统是精细化运营的主要手段、它通过大数据来指导我们的运营策略、改善用户体验,同时也通过对数据半自动或者自动分析,来快速定位被监控系统的问题。 前端监控的第一个环节就是数据采集,其中移动APP的数据...原创 2019-01-15 16:49:35 · 2777 阅读 · 0 评论 -
Android 热修复 - Tinker 实现及踩过的坑
前言在 Android 热修复 - 各框架原理学习及对比 一文中,介绍了Nuwa、Robust、Andfix 和 Tinker 的实现原理,以及优缺点对比等。下面我们就让 Tinker-Demo跑起来,看看实际效果以及解决集成过程中遇到的问题。Tinker-Demo 效果下载 Github 上的开源代码,然后仅需导入 tinker-sample-android 工程即可。添加依...原创 2019-01-18 19:56:11 · 575 阅读 · 0 评论 -
Android 热修复 框架原理学习及对比
前言从15年开始各技术大佬们开始研究热修复技术,并陆续开源了许多的热修复框架。如 Jasonross 的 Nuwa,美团的 Robust,阿里的 Andfix,腾讯的 Tinker 等等...均是Android 前辈们夜以继日的成果。而现在热修复被广泛地应用于Android 应用和游戏,运用并理解热修复框架在面试中也是加分项。所以,赶紧学起来吧...本文以Tinker 作为学习对象,主...原创 2019-01-18 19:44:49 · 336 阅读 · 0 评论 -
Android双进程守护实现方式
引言在我们进行应用开发时,会遇到上级的各种需求,其中有一条 刚需:后台保活,更有甚者:我要我们的应用永远活在用户的手机后台不被杀死 —— 这都 TM 的扯淡除了系统级别的应用能持续运行,所有三方程序都有被杀死的那一天!当然QQ、微信、支付宝等会好一些这类系统厂商认可的软件被官方加入白名单可以避免被杀进程;我们能做的只是通过各种手段尽量让我们的程序在后台运行的时间长一些,或者在被干...原创 2019-01-17 22:13:29 · 964 阅读 · 0 评论 -
微信开发基础①搭建开发环境
欢迎加入Android开发技术交流QQ群:150923287,本群可免费获取Flutter、Gradle、RxJava、小程序、Hybrid、移动架构、NDK、React Native、性能优化等技术教程!原创 2019-01-07 15:25:38 · 357 阅读 · 0 评论 -
NDK开发基础④增量更新之客户端合并差分包
接续上篇NDK开发基础③增量更新之服务器端生成差分包前情提要增量更新原理就是在服务器端使用bsdiff进行文件内容比较,再使用了bzip2进行文件压缩 , 在下载APP时可以减少用户流量 。在客户端 , 则是将下载好的拆分包与现有的APK进行文件合并 , 得出新的APK, 再进行安装 。生产资源及工具bsdiff --- bsdiff 生成差分包及合并差分包库 , 使用bspat...原创 2019-01-07 15:15:47 · 293 阅读 · 0 评论 -
NDK开发基础③增量更新之服务器端生成差分包
接续上篇NDK开发基础②文件加密解密与分割合并前情提要IO操作 , 一直在开发中占据很大比重 , 在Java中不管是网络操作还是文件操作 , 都作为IO流来处理 , 都依靠InputStream和OutputStream这两个输入输出流 。在上篇中 , 使用了C语言的IO流 , 进行了文件的加密与解密,分割与合并 。其要点是,加密解密使用了^运算 ,分割文件则使用了,文件大小与文件个数的%...原创 2019-01-07 15:12:12 · 257 阅读 · 0 评论 -
NDK开发基础②文件加密解密与分割合并
接续上篇NDK开发基础①使用Android Studio编写NDK前情提要随着Android Studio的越来越完善 , 我们编写NDK就会越来越方便,使用Android Studio 2.2 RC2 , 编写NDK的时候 , 不需要使用javah命令来生成头文件 , 创建一个native方法 , 使用alt + enter会提示要你创建一个JNI函数 , C/C++语法提示也相对比较完...原创 2019-01-07 15:07:13 · 253 阅读 · 0 评论 -
Android采用AES+RSA的加密机制对http请求进行加密
前言最近维护公司APP应用的登录模块,由于测试人员用Fiddler抓包工具抓取到了公司关于登录时候的明文登录信息。虽然使用的是HTTPS的方式进行http请求的,但还是被Fiddler抓到了明文内容。因此,需要对之前未加密的登录信息进行加密。在网上搜到一篇关于AES+RSA加密方案的文章,如下面链接所示,按照该方案成功解决了加密问题,在这里记录一下。开放接口的安全验证方案(AES+RSA)...转载 2019-01-15 17:49:09 · 501 阅读 · 0 评论 -
Android全面插件化RePlugin流程与源码解析
引言RePlugin,360开源的全面插件化框架,按照官网说的,其目的是“尽可能多的让模块变成插件”,并在很稳定的前提下,尽可能像开发普通App那样灵活。那么下面就让我们一起深入♂了解它吧。 (ps :阅读本文请多参考源码图片 ( ̄^ ̄)ゞ )一、介绍RePlugin对比其他插件化,它的强大和特色,在于它只Hook住了ClassLoader。One Hook这个坚持,最大程度保证了稳定...原创 2019-01-15 20:52:20 · 399 阅读 · 0 评论 -
Tinker源码解析系列—Application代理机制
引言我们知道Tinker实现热修复的原理是将自己的全量patch包插入到dexElements数组的前段,从而达到热修复的目的。以下所有对源码的分析均基于Tinker 1.7.7 版本Application代理机制通常我们都是在Application中进行一些初始化的工作,包括tinker的初始化,那么application中所涉及到的类,在tinker初始化完成前就已经被类加...原创 2019-01-21 16:57:26 · 616 阅读 · 0 评论 -
Android 基于MediaCodec开发抖音短视频录制(贰)
前言上一篇文章中,我大概介绍了一下短视频的拍摄,主要就是音视频的加减速。这篇文章我将介绍下抖音视频特效的实现,废话不多说,进入正题。1.特效概览抖音上目前有这九种视频特效,本文将介绍前面六种的实现。有人可能会问了,为什么最后三种特效被忽略了。当然是因为我懒啦。2.『灵魂出窍』抖音的实现效果如下:我的实现效果如下:代码实现通过观察抖音的效果...原创 2019-01-23 16:43:28 · 1875 阅读 · 3 评论 -
Android 基于MediaCodec开发抖音短视频录制(壹)
前言当一个Android开发者玩抖音玩疯了之后,就会绞尽脑汁思考自己是否也能开发出一款相同的APP来呢?滴,滴滴!本篇文章将介绍自己总结的短视频录制的相关内容,主要分为三个部分:摄像头内容录制 音频录制 视频合成先上效果图 录制过程 录制结果1.摄像头内容录制录制流程大致如上图所示。渲染关键代码新建外部纹理 @Overr...原创 2019-01-23 14:55:18 · 1495 阅读 · 0 评论 -
Android OkHttp源码解析
引言从OkHttp问世以来,度娘,google上关于OkHttp的讲解说明数不胜数,各种解读思想不尽相同,一千个读者就有一千个哈默雷特。本篇文章从源码出发向你介绍Okhttp的基本使用以及底层实现原理,让你从会写转向会用,学习Android顶尖源码的设计理念和开源扩展性,如果解读有误,还望提出探讨纠正。工欲善其事,必先利其器Android API23(6.0)版本以后,Google...原创 2019-01-22 17:21:39 · 299 阅读 · 0 评论 -
从Android到React Native开发④【打包流程解析和发布为Maven库】续篇
引言本篇是对前三篇React Native文章的番外补充,主要实现把React Native项目,打包为完整aar库发布到maven,提供库支持的功能,算是小众化的需求吧,不过通过本篇你可以了解:React Native的资源的打包流程。 React Native原生依赖结构。 本地多aar文件的合并实现。 进一步的Gradle脚本理解。 如何发布一个React Native的M...原创 2019-01-27 22:01:47 · 334 阅读 · 0 评论 -
移动开发Weex原理之带你去蹲坑
前言 本篇将节操满满的安利Weex(˶‾᷄ ⁻̫ ‾᷅˵),不一样的角度推荐你入坑,官网有的我们不拖泥,这里将给你补充官方没有的,深入到蹲坑给你排忧解难,总会给你点惊喜,内容越后越干,请紧张的往下看。一、简介 有对比才有伤害,说到Weex,难免让人联系React Native。虽同为跨平台移动端解决方案,拥JavaScript妄一统天下,单两者的设计理念其实截然不同。 这里...原创 2019-01-16 18:01:17 · 10517 阅读 · 0 评论 -
让Gradle放飞你的apk构建
引言 频繁的打包构建,时不时发布更新,是否总防不胜防的扰乱你的工作(tou lan)状态?(◐‿◑) 这是一篇简“短”解决方法,让Apk的构建参数完全由外界决定。通过外部配置版本信息、服务器地址、渠道、编译sdk版本等,直接构建apk,无需开发人员再次修改提交gradle等文件,解放你的双手吧。 以上场景,其实来源于最近的日常需求。因为项目的构建、测试、发布,都是在固定的...原创 2019-01-16 17:50:23 · 237 阅读 · 0 评论 -
从Android到React Native开发③【自定义原生控件支持】
引言第三篇,也是react native原生相关的最后的一篇,是时候给收个尾了。这次就不废话了,直接上主题( ̄^ ̄)ゞ。react native的高效,在于其中大部分组件,都是基于原生封装的,js中对组件的配置与操作,最终都会转化为native控件行为。以上的这段废话,总结起来就是:react native通过统一的接口封装,把原生控件转为js组件使用。既然有官方封装,那肯...原创 2019-01-27 21:24:55 · 420 阅读 · 0 评论 -
从Android到React Native开发②【通信与模块实现】
前言大家吼,(◐‿◑),这次第二期,就让我们来怼React Native的通信,快速实现单独的React Native模块到APP里,愉悦吧骚年。至于为什么要有这期?当然是为了愉悦的飙车啦ε-(´∀`; )。(如果你还没看过第一集,可移步这里从Android到React Native开发①【入门】) 下方包含源码剧透,剧情略长,请紧张耐心的往下看。( ̄^ ̄)ゞ文中标注有“【数字】”...原创 2019-01-27 21:15:30 · 366 阅读 · 0 评论 -
从Android到React Native开发①【入门】
前言大家好┏ (ω)=,许久不见,今天讲讲React Native~(╯‵□′)╯︵┻━┻。关于React Native是什么,各位可谷歌之,这里主要给大家安利下React Native,总结下一些从Android到React Native相关的概念和基础。来吧,互相伤害啊(˶‾᷄ ⁻̫ ‾᷅˵)。本文并非讲解入门基础,更多是给Android原生开发学习和理解React Native...原创 2019-01-27 21:02:25 · 1511 阅读 · 0 评论 -
Android App优化之提升你的App启动速度
前言在Android开发过程中APP启动速度一直是困扰着很多开发者的一个问题,今天就跟大家聊一天关于App启动速度如何优化的话题,本文主要分为:1.代码分析、2.Traceview上场、3.调整Application onCreate、4.PlaceHolder四个部分来跟大家一起探讨。 1, 代码分析以之前写的Github App为例.因为这个App集成了Bugly, P...原创 2019-01-21 18:02:46 · 317 阅读 · 0 评论 -
Tinker源码解析系列—补丁合成与加载
引言 上次我们分析了Tinker中关于Application的代理机制,这次我们来分析一下Tinker是如何进行补丁的合成与加载的。上一篇我们讲了 Tinker源码解析系列—Application代理机制阅读本文可能需要花费10分钟。以下所有对源码的分析均基于Tinker 1.7.7 版本,且由于源码过长,均只贴出关键部分Tinker中比较关键的几个类在开始分析补丁合成和加...原创 2019-01-21 17:27:56 · 514 阅读 · 0 评论 -
Android NDK开发基础①使用Android Studio编写NDK
接续上个系列之 [ JNI开发系列 ]:JNI开发系列①JNI概念及开发流程JNI开发系列②.h头文件分析JNI开发系列③C语言调用Java字段与方法JNI开发系列④C语言调用构造方法JNI开发系列⑤对象引用的处理前情提要上个系列,我们学习了Java与C/C++的交互 , 使用Java调用C/C++函数,使用C/C++调Java的方法和创建Java对象等等 。在上个系列中 , 我们使用...原创 2019-01-07 15:00:52 · 303 阅读 · 0 评论 -
JNI开发系列⑤对象引用的处理
接续上篇JNI开发系列④C语言调用构造方法前情提要在上一篇中 , 我们了解到了 , 创建一个Java对象的几个步骤:第一,findClass找到需要创建对象的类(全类名)第二,得到构造方法的ID,构造方法名称,统一使用<init>第三,使用NewObject创建Java对象当创建了这个类的对象之后 , 我们就可以使用这个类里面所提供的方法了 , 那么我们就可以在...原创 2019-01-07 14:56:05 · 254 阅读 · 0 评论 -
Flutter移动开发系列教程-初识Flutter篇
Flutter简介Flutter 是 Google推出并开源的移动应用开发框架,主打跨平台、高保真、高性能。开发者可以通过 Dart语言开发 App,一套代码同时运行在 iOS 和 Android平台。 Flutter提供了丰富的组件、接口,开发者可以很快地为 Flutter添加 native扩展。同时 Flutter还使用 Native引擎渲染视图,这无疑能为用户提供良好的体验。跨...原创 2018-12-27 16:45:43 · 826 阅读 · 0 评论 -
Flutter移动开发系列教程!
原生开发与跨平台技术原生开发原生应用程序是指某一个移动平台(比如iOS或安卓)所特有的应用,使用相应平台支持的开发工具和语言,并直接调用系统提供的SDK API。比如Android原生应用就是指使用Java或Kotlin语言直接调用Android SDK开发的应用程序;而iOS原生应用就是指通过Objective-C或Swift语言直接调用iOS SDK开发的应用程序。原生开发有以下主要优...原创 2018-12-27 16:43:23 · 1232 阅读 · 0 评论 -
爱奇艺Android客户端启动优化与分析
1 简介互联网领域里有个八秒定律,如果网页打开时间超过8秒,便会有超过70%的用户放弃等待,对Android APP而言,要求更加严格,如果系统无响应时间超过5秒,便会出现ANR,APP可能会被强制关闭,因此,启动时间作为一个重要的性能指标,关系着用户的第一体验。爱奇艺安卓APP非常重视启动速度的优化,本文将从启动过程,启动时间测量,启动优化,以及后续监控等方面分享我们在启动优化方面积累的...原创 2018-12-27 14:15:23 · 730 阅读 · 0 评论 -
Android开发面试经—常见面试官提问Android题
作者丨铝小亮https://www.jianshu.com/p/1ff613c6b8a8 1.要做一个尽可能流畅的ListView,你平时在工作中如何进行优化的?①Item布局,层级越少越好,使用hierarchyview工具查看优化。②复用convertView③使用ViewHolder④item中有图片时,异步加载⑤快速滑动时,不加载图片⑥item中有图...转载 2018-12-10 15:35:59 · 234 阅读 · 0 评论 -
成为一名Android移动互联网架构师必备的技能有哪些?
首先打好扎实的基础 其次你得了解Android App开发框架知识体系以及目前Android前言开发技术 很多人在企业工作中甚至是面试过程中都会被问及Android性能如何调优之类的问题,前几天做了一张性能优化的思维导图: 前段时间在后台有很多朋友问我如何突破技术瓶颈今天就跟大家讲一讲, 技术学习的困惑:当达到一个瓶颈时,可以学习的参考系越来越少,首先是...原创 2018-12-10 13:56:31 · 854 阅读 · 0 评论 -
Android开发者神器—Google移动开发平台Flutter发布
Flutter是一个开源项目,由Google的一组开发工程师开发,也有社区的一批外部开发者。它使用Dart语言开发,值得一提的是,Dart也是由Google维护的。用Flutter和Dart语言拥有很棒的工具和IDE集成,与IntelliJ和Anddroid Studio可以无缝集成。使用Flutter可以创建漂亮且流畅的界面。Flutter有一个内置的Materia...原创 2018-12-13 19:36:14 · 275 阅读 · 0 评论 -
拥抱Android开发的变化,才能更好的拥抱未来!
近期很多同学都问过我这样的问题。“现在学习Android开发还有前景吗?”“Android开发还有什么可以研究的?”大家对于职业的未来,都有一些迷茫和焦虑,为什么会这样呢?现在互联网行业,各大公司已经从争夺用户转为争夺用户时长。而小程序、快应用的崛起,也让许多 App 的增长达到瓶颈。所有人都在说,国内移动互联网的红利期已经过去。另外一方面,今年移动端的技术变革也确实有点慢。大...原创 2018-12-07 17:59:22 · 351 阅读 · 0 评论 -
C语言基础及指针③函数与二级指针
在上一篇中 , 我们分析了指针在内存中是怎样存储的 , 以及它是怎样操作变量的 , 接下来 , 我们谈谈 , 函数 , 二级指针 。函数C语言中函数的定义和java中方法的定义类似 , 只是没有public , private等这样的权限控制 , 定义如下:返回值类型 functionName(参数类型 参数名称 , 参数类型 参数名称) { // 函数体 }原创 2017-06-03 22:56:38 · 363 阅读 · 0 评论 -
C语言基础及指针②之指针内存分析
在上一篇中 , 我们了解了C语言的基本语法 , 以及简单指针 , 也知道 , 指针是C语言的核心 , 那么我们今天就来简单剖析一下指针 , 了解他是怎么的神奇 。今天是七夕 , 祝各位情人节快乐 。指针的基本写法是int i = 10 ; int *p = &i ; , 由此我们可以看出 , 指针和变量类似 , 其实 , 指针也是变量 , 我们printf("%#x",原创 2017-05-17 17:32:59 · 360 阅读 · 0 评论 -
Android NDK开发之C语言基础及指针①
我们知道 , Android系统是基于linux开发 , 采用的是linux内核 , Android APP开发大部分也要和系统打交道 , 只是Android FrameWork 帮我们屏蔽了系统操作 , 我们从Android 系统的分成结构可以看出 , Android FrameWork是通过JNI与底层的C/C++库交互 , 例如:FreeType ,OpenGL ,SQLite , 音视频等原创 2017-05-17 17:30:35 · 380 阅读 · 0 评论 -
MaterialDesign控制项目全局样式
为什么要用appcompat项目,因为里面是谷歌精心准备的---解决android碎片化开发蛋疼的问题,让我们app编译出来在各种高低版本之间、不同的厂商生产的ROM之间显示出来的效果UI控件等有一较一致的体验。1.引入appcompat-v7项目(包括了android-support-v7-appcompat.jar和资源文件)2.写自己的全局样式:Base原创 2016-07-28 23:01:59 · 286 阅读 · 0 评论 -
Flutter移动开发系列教程-搭建Flutter开发环境
安装Flutter工欲善其事必先利其器,本节首先会分别介绍一下在Windows和macOS下Flutter SDK的安装,然后再介绍一下配IDE和模拟器的使用。搭建Flutter开发环境由于Flutter会同时构建Android和IOS两个平台的发布包,所以Flutter同时依赖Android SDK和iOS SDK,在安装Flutter时也需要安装响应平台的构建工具和SDK。下面我们...原创 2018-12-27 16:48:24 · 692 阅读 · 0 评论 -
C语言基础及指针④函数指针
接续上篇C语言基础及指针③函数与二级指针在上一篇中 , 我们学习了函数与二级指针 , 函数和java中的方法类似 , 只是缺少了访问控制符 , 二级指针也就是指针的指针 , 指针里面存储的是指针的地址 , 可以通过*操作符不断往上追溯 , 然后通过内存地址操作内存空间 。函数指针当我们定义一个函数的时候 , 这个函数也会像变量一样 , 会有一个内存地址 , 我们也可以将函数定义成为一个...原创 2018-12-18 22:20:25 · 216 阅读 · 0 评论