
Android开发
文章平均质量分 78
疯狂的程序员丶
这个作者很懒,什么都没留下…
展开
-
Flutter完整开发实战详解(一、Dart语言和Flutter基础)
前言 在如今的 Fultter 大潮下,本系列是让你看完会安心的文章。本系列将完整讲述:如何快速从0开发一个完整的 Flutter APP。同时也会提供一些Flutter的开发细节技巧,并针对开发过程中可能遇到的问题进行填坑。 系列文章分为三篇,第一部分是基础篇(针对Dart语言和Flutter基础),第二部分是App快速开发实战篇,第三部分是细节填坑篇。 笔者相继开发过 Flutt...原创 2019-03-13 21:02:06 · 407 阅读 · 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 · 377 阅读 · 0 评论 -
从Android到React Native开发③【自定义原生控件支持】
引言第三篇,也是react native原生相关的最后的一篇,是时候给收个尾了。这次就不废话了,直接上主题( ̄^ ̄)ゞ。react native的高效,在于其中大部分组件,都是基于原生封装的,js中对组件的配置与操作,最终都会转化为native控件行为。以上的这段废话,总结起来就是:react native通过统一的接口封装,把原生控件转为js组件使用。既然有官方封装,那肯...原创 2019-01-27 21:24:55 · 470 阅读 · 0 评论 -
从Android到React Native开发②【通信与模块实现】
前言大家吼,(◐‿◑),这次第二期,就让我们来怼React Native的通信,快速实现单独的React Native模块到APP里,愉悦吧骚年。至于为什么要有这期?当然是为了愉悦的飙车啦ε-(´∀`; )。(如果你还没看过第一集,可移步这里从Android到React Native开发①【入门】) 下方包含源码剧透,剧情略长,请紧张耐心的往下看。( ̄^ ̄)ゞ文中标注有“【数字】”...原创 2019-01-27 21:15:30 · 399 阅读 · 0 评论 -
从Android到React Native开发①【入门】
前言大家好┏ (ω)=,许久不见,今天讲讲React Native~(╯‵□′)╯︵┻━┻。关于React Native是什么,各位可谷歌之,这里主要给大家安利下React Native,总结下一些从Android到React Native相关的概念和基础。来吧,互相伤害啊(˶‾᷄ ⁻̫ ‾᷅˵)。本文并非讲解入门基础,更多是给Android原生开发学习和理解React Native...原创 2019-01-27 21:02:25 · 1579 阅读 · 0 评论 -
抛弃EventBus,用LiveDataBus代替—Android消息总线的演进之路
前言对于Android系统来说,消息传递是最基本的组件,每一个App内的不同页面,不同组件都在进行消息传递。消息传递既可以用于Android四大组件之间的通信,也可用于异步线程和主线程之间的通信。对于Android开发者来说,经常使用的消息传递方式有很多种,从最早使用的Handler、BroadcastReceiver、接口回调,到近几年流行的通信总线类框架EventBus、RxBus。An...原创 2019-01-25 19:25:38 · 2147 阅读 · 0 评论 -
Android 基于MediaCodec开发抖音短视频录制(贰)
前言上一篇文章中,我大概介绍了一下短视频的拍摄,主要就是音视频的加减速。这篇文章我将介绍下抖音视频特效的实现,废话不多说,进入正题。1.特效概览抖音上目前有这九种视频特效,本文将介绍前面六种的实现。有人可能会问了,为什么最后三种特效被忽略了。当然是因为我懒啦。2.『灵魂出窍』抖音的实现效果如下:我的实现效果如下:代码实现通过观察抖音的效果...原创 2019-01-23 16:43:28 · 1993 阅读 · 3 评论 -
Android 基于MediaCodec开发抖音短视频录制(壹)
前言当一个Android开发者玩抖音玩疯了之后,就会绞尽脑汁思考自己是否也能开发出一款相同的APP来呢?滴,滴滴!本篇文章将介绍自己总结的短视频录制的相关内容,主要分为三个部分:摄像头内容录制 音频录制 视频合成先上效果图 录制过程 录制结果1.摄像头内容录制录制流程大致如上图所示。渲染关键代码新建外部纹理 @Overr...原创 2019-01-23 14:55:18 · 1620 阅读 · 0 评论 -
Android OkHttp源码解析
引言从OkHttp问世以来,度娘,google上关于OkHttp的讲解说明数不胜数,各种解读思想不尽相同,一千个读者就有一千个哈默雷特。本篇文章从源码出发向你介绍Okhttp的基本使用以及底层实现原理,让你从会写转向会用,学习Android顶尖源码的设计理念和开源扩展性,如果解读有误,还望提出探讨纠正。工欲善其事,必先利其器Android API23(6.0)版本以后,Google...原创 2019-01-22 17:21:39 · 364 阅读 · 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 · 377 阅读 · 0 评论 -
Tinker源码解析系列—补丁合成与加载
引言 上次我们分析了Tinker中关于Application的代理机制,这次我们来分析一下Tinker是如何进行补丁的合成与加载的。上一篇我们讲了 Tinker源码解析系列—Application代理机制阅读本文可能需要花费10分钟。以下所有对源码的分析均基于Tinker 1.7.7 版本,且由于源码过长,均只贴出关键部分Tinker中比较关键的几个类在开始分析补丁合成和加...原创 2019-01-21 17:27:56 · 602 阅读 · 0 评论 -
Tinker源码解析系列—Application代理机制
引言我们知道Tinker实现热修复的原理是将自己的全量patch包插入到dexElements数组的前段,从而达到热修复的目的。以下所有对源码的分析均基于Tinker 1.7.7 版本Application代理机制通常我们都是在Application中进行一些初始化的工作,包括tinker的初始化,那么application中所涉及到的类,在tinker初始化完成前就已经被类加...原创 2019-01-21 16:57:26 · 676 阅读 · 0 评论 -
Android 热修复 - Tinker 实现及踩过的坑
前言在 Android 热修复 - 各框架原理学习及对比 一文中,介绍了Nuwa、Robust、Andfix 和 Tinker 的实现原理,以及优缺点对比等。下面我们就让 Tinker-Demo跑起来,看看实际效果以及解决集成过程中遇到的问题。Tinker-Demo 效果下载 Github 上的开源代码,然后仅需导入 tinker-sample-android 工程即可。添加依...原创 2019-01-18 19:56:11 · 635 阅读 · 0 评论 -
Android 热修复 框架原理学习及对比
前言从15年开始各技术大佬们开始研究热修复技术,并陆续开源了许多的热修复框架。如 Jasonross 的 Nuwa,美团的 Robust,阿里的 Andfix,腾讯的 Tinker 等等...均是Android 前辈们夜以继日的成果。而现在热修复被广泛地应用于Android 应用和游戏,运用并理解热修复框架在面试中也是加分项。所以,赶紧学起来吧...本文以Tinker 作为学习对象,主...原创 2019-01-18 19:44:49 · 379 阅读 · 0 评论 -
Android双进程守护实现方式
引言在我们进行应用开发时,会遇到上级的各种需求,其中有一条 刚需:后台保活,更有甚者:我要我们的应用永远活在用户的手机后台不被杀死 —— 这都 TM 的扯淡除了系统级别的应用能持续运行,所有三方程序都有被杀死的那一天!当然QQ、微信、支付宝等会好一些这类系统厂商认可的软件被官方加入白名单可以避免被杀进程;我们能做的只是通过各种手段尽量让我们的程序在后台运行的时间长一些,或者在被干...原创 2019-01-17 22:13:29 · 1066 阅读 · 0 评论 -
Android开发实现OpenCV人脸检测
前言这两天在踩OpenCV的坑,需求:在不安装OpenCV Manager apk的情况下跑通opencv下的人脸检测demo。写下此文记录下;注:本文采用opencv下的原始人脸检测的demo,所以里面的c代码都是原始包名的,如果你想修改包名则需要自己会jni的知识;后面我自己会修改包名重新生成新的so,如果这部分大家有问题的话,欢迎留言;一、OpenCV—SDK源码Open...原创 2019-01-17 16:14:41 · 521 阅读 · 0 评论 -
移动开发Weex原理之带你去蹲坑
前言 本篇将节操满满的安利Weex(˶‾᷄ ⁻̫ ‾᷅˵),不一样的角度推荐你入坑,官网有的我们不拖泥,这里将给你补充官方没有的,深入到蹲坑给你排忧解难,总会给你点惊喜,内容越后越干,请紧张的往下看。一、简介 有对比才有伤害,说到Weex,难免让人联系React Native。虽同为跨平台移动端解决方案,拥JavaScript妄一统天下,单两者的设计理念其实截然不同。 这里...原创 2019-01-16 18:01:17 · 10598 阅读 · 0 评论 -
让Gradle放飞你的apk构建
引言 频繁的打包构建,时不时发布更新,是否总防不胜防的扰乱你的工作(tou lan)状态?(◐‿◑) 这是一篇简“短”解决方法,让Apk的构建参数完全由外界决定。通过外部配置版本信息、服务器地址、渠道、编译sdk版本等,直接构建apk,无需开发人员再次修改提交gradle等文件,解放你的双手吧。 以上场景,其实来源于最近的日常需求。因为项目的构建、测试、发布,都是在固定的...原创 2019-01-16 17:50:23 · 339 阅读 · 0 评论 -
Android全面插件化RePlugin流程与源码解析
引言RePlugin,360开源的全面插件化框架,按照官网说的,其目的是“尽可能多的让模块变成插件”,并在很稳定的前提下,尽可能像开发普通App那样灵活。那么下面就让我们一起深入♂了解它吧。 (ps :阅读本文请多参考源码图片 ( ̄^ ̄)ゞ )一、介绍RePlugin对比其他插件化,它的强大和特色,在于它只Hook住了ClassLoader。One Hook这个坚持,最大程度保证了稳定...原创 2019-01-15 20:52:20 · 469 阅读 · 0 评论 -
Android采用AES+RSA的加密机制对http请求进行加密
前言最近维护公司APP应用的登录模块,由于测试人员用Fiddler抓包工具抓取到了公司关于登录时候的明文登录信息。虽然使用的是HTTPS的方式进行http请求的,但还是被Fiddler抓到了明文内容。因此,需要对之前未加密的登录信息进行加密。在网上搜到一篇关于AES+RSA加密方案的文章,如下面链接所示,按照该方案成功解决了加密问题,在这里记录一下。开放接口的安全验证方案(AES+RSA)...转载 2019-01-15 17:49:09 · 582 阅读 · 0 评论 -
Retrofit源码解析
序言做Android开发的小伙伴都知道,现在最流行的网络框架就是RxJava+Retrofi+OkHttp。今天我们就一起来学习一下Retrofit内部如何实现。文章将会从下面几个点展开介绍:一、 如何使用Retrofit二、 Retrofit源码解析1. 构建Retrofit对象2. 创建Service实例3. 执行一次请求的具体流程三、总结如何使用Retro...原创 2019-01-15 16:59:24 · 289 阅读 · 0 评论 -
AndroidAPP数据采集SDK设计
背景介绍 随着流量红利逐渐消失,移动互联网时代正式进入了一个新的阶段,这个阶段要求我们对有限的流量进行精细化运营、深度挖掘加工,从而使流量进行有效转换和不断增长。 完备的前端监控系统是精细化运营的主要手段、它通过大数据来指导我们的运营策略、改善用户体验,同时也通过对数据半自动或者自动分析,来快速定位被监控系统的问题。 前端监控的第一个环节就是数据采集,其中移动APP的数据...原创 2019-01-15 16:49:35 · 3035 阅读 · 0 评论 -
微信开发基础①搭建开发环境
欢迎加入Android开发技术交流QQ群:150923287,本群可免费获取Flutter、Gradle、RxJava、小程序、Hybrid、移动架构、NDK、React Native、性能优化等技术教程!原创 2019-01-07 15:25:38 · 409 阅读 · 0 评论 -
NDK开发基础④增量更新之客户端合并差分包
接续上篇NDK开发基础③增量更新之服务器端生成差分包前情提要增量更新原理就是在服务器端使用bsdiff进行文件内容比较,再使用了bzip2进行文件压缩 , 在下载APP时可以减少用户流量 。在客户端 , 则是将下载好的拆分包与现有的APK进行文件合并 , 得出新的APK, 再进行安装 。生产资源及工具bsdiff --- bsdiff 生成差分包及合并差分包库 , 使用bspat...原创 2019-01-07 15:15:47 · 334 阅读 · 0 评论 -
NDK开发基础③增量更新之服务器端生成差分包
接续上篇NDK开发基础②文件加密解密与分割合并前情提要IO操作 , 一直在开发中占据很大比重 , 在Java中不管是网络操作还是文件操作 , 都作为IO流来处理 , 都依靠InputStream和OutputStream这两个输入输出流 。在上篇中 , 使用了C语言的IO流 , 进行了文件的加密与解密,分割与合并 。其要点是,加密解密使用了^运算 ,分割文件则使用了,文件大小与文件个数的%...原创 2019-01-07 15:12:12 · 298 阅读 · 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 · 297 阅读 · 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 · 339 阅读 · 0 评论 -
JNI开发系列⑤对象引用的处理
接续上篇JNI开发系列④C语言调用构造方法前情提要在上一篇中 , 我们了解到了 , 创建一个Java对象的几个步骤:第一,findClass找到需要创建对象的类(全类名)第二,得到构造方法的ID,构造方法名称,统一使用<init>第三,使用NewObject创建Java对象当创建了这个类的对象之后 , 我们就可以使用这个类里面所提供的方法了 , 那么我们就可以在...原创 2019-01-07 14:56:05 · 290 阅读 · 0 评论 -
JNI开发系列④C语言调用构造方法
接续上篇JNI开发系列③C语言调用Java字段与方法前情提要Java调用C方法很简单 , 只需要编写native方法即可 , 通过C去调用Java的字段与方法 , 则需要比较复杂的操作 , 上篇中介绍了 , C调用的Java字段与方法的几个套路:步骤一 、 得到jclass, 字节码对象 , 如果是static native修饰 , 则函数会以jclass类型传入 , 非静态则需要得...原创 2019-01-07 14:51:52 · 367 阅读 · 1 评论 -
JNI开发系列③C语言调用Java字段与方法
接续上篇JNI开发系列②.h头文件分析前情提要在前面 , 我们已经熟悉了JNI的开发流程 , .h头文件的分析 , 生成头文件javah命令 , 以及java类型在C语言中的表现形式 , 值得注意的是 , java中的所有引用类型都是jobject类型 , native生成的函数 , 以Java_全类名_方法名表示,包名的.以_表示 。概述在开篇的时候 ,我们就使用java的nat...原创 2019-01-04 22:15:10 · 289 阅读 · 0 评论 -
JNI开发系列②.h头文件分析
接续上篇JNI开发系列①JNI概念及开发流程前情提要JNI技术 , 是java世界与C/C++世界的通信基础 , java语言可以通过native方法去调用C/C++的函数 , 也可以通过C/C++来调用java的字段与方法 。 在上篇中 , 我们了解了JNI开发的基本流程 , 接下来我们来分析分析C语言代码以及头文件 。.h头文件分析头文件生成命令 : javah com.ze...原创 2019-01-04 14:36:26 · 317 阅读 · 0 评论 -
JNI开发系列①JNI概念及开发流程
接续上个系列C语言基础及指针引言在学习了C语言基础之后 ,我们简单的了解了C语言编程的一些范式 , 了解了指针 , 结构体 , 联合体 , 函数 , 文件IO等等 。我们最终的目的是要学会NDK开发 , 而NDK开发就离不开我们的JNI技术 。下面 , 就来开始我们的JNI之旅吧 。JNI的概念JNI全称 Java Native Interface , java本地化接口 , 可以...原创 2019-01-04 14:33:11 · 544 阅读 · 0 评论 -
C语言基础及指针⑩预编译及jni.h分析
接续上篇C语言基础及指针⑨联合体与枚举在上篇中我们了解了 , 多类型集合的联合体 , 固定值集合的枚举 , 内容相对比较简单 , 今天我们谈谈预编译 , 也是本系列最后一个知识点 , C语言基础系列就要告一段落了 , 要开始我们的jni系列了 , JNI(Java Native Interface) 是java与C/C++进行通信的一种技术 , 使用JNI技术,可以java调用C/C++的函数...原创 2019-01-04 14:29:10 · 229 阅读 · 0 评论 -
C语言基础及指针⑨联合体与枚举
接续上篇C语言基础及指针⑧文件IO在上篇中 , 我们初步了解了C语言的IO操作 , 编写IO操作的大致流程:文件IO编写步骤:1.使用fopen函数 , 得到文件指针2.指定fopen的操作模式r,w (指定输入输出流)3.创建缓冲区 , 缓存读写数据(将流数据读入到内存或写入到磁盘)3.关闭流 (关闭文件流)接着介绍了文件的加密解密 , 文件的存储都是以二进制保存在磁盘上的...原创 2019-01-04 14:26:29 · 242 阅读 · 0 评论 -
C语言基础及指针⑧文件IO
接续上篇C语言基础及指针⑦结构体与指针在结构体与指针中 , 我们了解到结构体与java中的类相似 , 也是一种自定义类型数据结构 , 也学习了结构的各种用法 , 以及简单的应用 。在编写应用程序的时候 , 文件IO操作是不可避免的 , 小到日志本地化收集 , 大到数据格式化存储 , 都需要使用文件IO , 来操作文件流进行数据处理 。在使用java开发的时候 , 我们有File类和FileR...原创 2019-01-04 14:24:51 · 288 阅读 · 0 评论 -
C语言基础及指针⑦结构体与指针
接续上篇C语言基础及指针⑥字符操作如果说类是java中结构化数据类型的核心 , 那么结构体就是C语言中结构化数据类型的核心 。在java中我们常有这样的写法:public class Product { private String name ; private String desc ; // get set ...}这种常见的javabean的写法 , 在C...原创 2019-01-04 14:22:46 · 242 阅读 · 0 评论 -
C语言基础及指针⑥字符操作
接续上篇C语言基础及指针⑤动态内存分配字符操作 , 是我们写程序时 , 最常用的一种操作 , 例如:字符串截取 , 字符串替换 , 字符串转整数类型等等 , 都是字符操作 , 在java中String类就是二三十个方法 , 还有StringBuffer , StringBuilder等辅助类 。 下面 ,我们就来看看C语言中字符处理的函数 。一. 字符数组// 字符数组void c...原创 2019-01-04 14:20:09 · 274 阅读 · 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 · 810 阅读 · 0 评论 -
Flutter移动开发系列教程-初识Flutter篇
Flutter简介Flutter 是 Google推出并开源的移动应用开发框架,主打跨平台、高保真、高性能。开发者可以通过 Dart语言开发 App,一套代码同时运行在 iOS 和 Android平台。 Flutter提供了丰富的组件、接口,开发者可以很快地为 Flutter添加 native扩展。同时 Flutter还使用 Native引擎渲染视图,这无疑能为用户提供良好的体验。跨...原创 2018-12-27 16:45:43 · 910 阅读 · 0 评论 -
Flutter移动开发系列教程!
原生开发与跨平台技术原生开发原生应用程序是指某一个移动平台(比如iOS或安卓)所特有的应用,使用相应平台支持的开发工具和语言,并直接调用系统提供的SDK API。比如Android原生应用就是指使用Java或Kotlin语言直接调用Android SDK开发的应用程序;而iOS原生应用就是指通过Objective-C或Swift语言直接调用iOS SDK开发的应用程序。原生开发有以下主要优...原创 2018-12-27 16:43:23 · 1374 阅读 · 0 评论