Android开发学习之路
东月之神
别驻足,梦想要不停追逐;别认输,熬过黑夜才有日出。要记住,成功就在下一步;路很苦,汗水是最美的书!
展开
-
Android开发学习之路--App全局置灰
当有个悼念日的时候,很多app和网页都只呈现了黑白色,这里,我们可以简单研究下。常用方式App页面置灰常规方案就能想到内置两套UI图,加载不同的UI,但是这样实现起来特别复杂,而且包体积大小也成倍增加,需要请求后台服务端的图片也得搞两套。其实换个思路,我们把Android渲染的数据统一给他灰度不就可以实现我们所需要的功能嘛,那就得看下Android的UI绘制过程了,关于UI的绘制已经有很多分析了,这里就不赘述了。原理实现DecorView一个Activity由最外层的PhoneWindow,原创 2020-11-12 22:29:41 · 5205 阅读 · 3 评论 -
Android开发学习之路--XPosed插件开发
1. Xposed插件Hello World新建工程:MyXposed引入xposed: provided 'de.robv.android.xposed:api:82' provided 'de.robv.android.xposed:api:82:sources'官方链接修改AndroidManifest在AndroidManifest中修改如下:<applic...原创 2020-01-02 20:59:13 · 1523 阅读 · 1 评论 -
Android开发学习之路-脱壳反编译
前言想研究下某app里面的实现技术,使用常规的反编译发现竟然是加固的,所谓Apk加固,就是对dex文件进行加密,防止App被反编译,保证apk的安全。市面上有很多的加固平台,有360加固,腾讯乐固,爱加密等等。上一篇文章我们了解了加固,也有了加固后的apk,这里我们利用工具脱壳查看源码。1. 脱壳工具FDex2道高一尺魔高一丈嘛,有加固平台,也有脱壳工具,常见的脱壳工具有FDex2,...原创 2019-12-26 09:26:15 · 4007 阅读 · 0 评论 -
Android开发学习之路-加固实践
前言起因也是想要看一些优秀的程序某些内容是怎么实现的,所以需要脱壳,但是对于怎么加固也还是比较感兴趣的,加固涉及到的安全的内容很多很多,这里也只是用个简单的例子来过把瘾,参考了些文章,只是为了理顺思路,也为之后的脱壳做个准备。其实加固可以理解为,一个应用程序,利用了插件化的功能,启动了另一个apk,而这个apk是经过加密的,壳应用会在加载需要启动的apk的时候去解密。这样即使逆向了dex文件...原创 2019-12-25 18:55:28 · 1412 阅读 · 0 评论 -
Android开发学习之路--在Android应用中愉快地写C/C++代码
1 前言一直想在android层面写c进程,然后java可以与c进程交互,以前在android源码中想玩就可以直接在init.rc中加上交叉编译好的c进程就可以了,而在ide中,也就是ndk编译后各种权限问题就有点不得而知了。花了几天时间研究实践,也终于实现了。再者这个也可以为后期做进程间通信和守护进程做准备。进程间通过一个中转daemon来处理分发,各个进程交互的接口也可以通过jni暴露给j原创 2018-02-02 21:16:49 · 17003 阅读 · 0 评论 -
Android开发学习之路--性能优化之常用工具
android性能优化相关的开发工具有很多很多种,这里对如下六个工具做个简单的使用介绍,主要有Android开发者选项,分析具体耗时的Trace view,布局复杂度工具Hierarchy View,应用启动时间,Memory、CPU、Network分析,静态代码检查工具Lint以及程序稳定性monkey。下面就开始学习下这些工具吧。一、Android开发者选项 Andorid开发工具众多,首先就原创 2017-01-13 17:04:19 · 3911 阅读 · 3 评论 -
Android开发学习之路--性能优化之布局优化
Android性能优化方面也有很多文章了,这里就做一个总结,从原理到方法,工具等做一个简单的了解,从而可以慢慢地改变编码风格,从而提高性能。一、Android系统是如何处理UI组件的更新操作的 既然和布局相关,那么我们需要了解Android系统是如何处理UI组件的更新操作的。 1、Android需要把XML布局文件转换成GPU能够识别并绘制的对象。这个操作是在DisplayList的帮助下完原创 2016-12-31 21:27:09 · 3347 阅读 · 0 评论 -
Android开发学习之路--Java和Js互相调用
随着前端的火热,以前开发的快速,越来越多的native app在其中融合了h5,就拿淘宝就是很多的h5组成的,一旦出现什么节日,他都可以不用通过更新app来实现界面的改变,而且android和ios可以基本上共用一套代码。这不微信也出了小应用,感觉前端有慢慢吞噬客户端的趋势,所以得学下前端的一些知识了,要不然就落后了。对于本文就是学习下js和android的交互了。Java和Js的通用实现 其实a原创 2016-11-27 15:20:04 · 1463 阅读 · 0 评论 -
Android开发学习之路--基于vitamio的视频播放器(一)
之前也试过vitamio这个库,后来不知道被什么事情给耽搁了,就没继续下去。近来觉得视频还是需要学习一下的,谁让直播那么火呢,就想着写一个简单的视频播放的app先吧。好了那就开始吧,暂时取名为JPlayer,后续慢慢改进,源码也在github上(https://github.com/imchenjianneng/JPlayer),后续不断更新吧。 首先新建工程JPlayer,然后新建个主界面吧原创 2016-09-30 08:32:24 · 4406 阅读 · 0 评论 -
Android开发学习之路--基于vitamio的视频播放器(二)
终于把该忙的事情都忙得差不多了,接下来又可以开始good good study,day day up了。在Android开发学习之路–基于vitamio的视频播放器(一)中,主要讲了播放器的界面的简单实现,以及扫描视频文件,获取视频文件的部分信息,还没开始讲解如何使用vitamio这个库,这里就开始讲解下最简单的使用方法吧。1.接口的简单使用 layout界面:<?xml version="1.0原创 2016-10-22 14:05:06 · 2093 阅读 · 1 评论 -
Android开发学习之路--逆向分析反编译
一般情况下我们想要了解别人的app怎么实现这个动画,这个效果的时候,总是会想到反编译一下,看下布局,看下代码实现。对,这对于有经验的玩家确实手到擒来了,但是初学者,根本就不知道怎么反编译,怎么看代码,甚至不知道什么是反编译。那就学一下吧。简单写一个app 先简单写个app用作后面的反编译,当然可以直接拿现有的比较成熟的app,但是没有源码我们没办法好好比较了。好了,比较简单就直接上代码了,这里用了原创 2016-08-25 11:29:06 · 9027 阅读 · 0 评论 -
Android开发学习之路--Drawable mutations
时间过得很快,明天终于可以拿到房子了,交完这次房租,也可以成为房东了,看看博客也好久没有更新了,最近一直在整机器人,也没有太多时间整理博客。 今天下午和同事一起遇到了一个问题,就是明明没有改变一个控件的alpha值,但是这个控件的透明度居然变了。甚是奇怪之余,大神在stackoverflow上去提了问题,最后也有另外的大神给了正确的回复。 最终我们知道了是android的Drawable原创 2016-07-07 21:20:40 · 2669 阅读 · 3 评论 -
Android开发学习之路--RxAndroid之简单原理
学习了RxAndroid,其实也就是RxJava了,但是还是不是非常清楚到底RxAndroid有什么用呢?为什么要使用RxAndroid呢?这篇文章讲得不错,RxJava的原理。但是这里还是把整个过程学习下。一般实现 首先来个简单的例子,选出一个班级里面,学生成绩最好的,然后保存这个学生的姓名,这里简单实现下Student的类。package com.jared.emrxandr原创 2016-04-24 22:02:59 · 10988 阅读 · 2 评论 -
Android开发学习之路--RxAndroid之操作符
学习了RxAndroid的一些基本知识,上篇文章也试过了RxAndroid的map操作符,接着来学习更多的操作符的功能吧。 操作符就是为了解决对Observable对象的变换的问题,操作符用于在Observable和最终的Subscriber之间修改Observable发出的事件。map map从字面上理解就是映射的关系了,可以把一个事件转换为另一个事件,先看个例子吧还是: private原创 2016-03-13 21:44:36 · 5014 阅读 · 1 评论 -
Android开发学习之路--React-Native之初体验
近段时间业余在学node.js,租了个阿里云准备搭建后端,想用node.js,偶尔得知react-native可以在不同平台跑,js在iOS和android上都可以运行ok,今天就简单学习下react-native。(这里的开发环境是mac,windows和linux可能会有所不同,而且跑ios也需要mac的)。安装react-native 首先是安装react-native了,这里首先是已经安装原创 2016-05-08 19:58:38 · 5725 阅读 · 6 评论 -
Android开发学习之路--Android Studio cmake编译ffmpeg
最新的android studio2.2引入了cmake可以很好地实现ndk的编写。这里使用最新的方式,对于以前的android下的ndk编译什么的可以参考之前的文章:Android开发学习之路–NDK、JNI之初体验。1.ffmpeg编译 进入正题,既然是ffmpeg的移植编译,那么就先下载ffmpeg,https://ffmpeg.org/download.html#releases。这里下载原创 2016-10-20 22:33:00 · 17617 阅读 · 37 评论 -
Android开发学习之路-Flutter混合开发实践
前言为了迎合新技术,并且可以一端开发两端受用,于是乎在引入新的功能模块的时候,尝鲜使用flutter来进行开发。众所周知,在尝鲜新技术的时候总会有种畏惧感,人类总是喜欢使用熟悉的东西,而作为程序员更加喜欢用自己擅长的技术,但纵使有千般难,万般坑,既然选择了,总要把他跨过,踩完。1. Flutter工程介绍1.1 模块介绍目前工程包括基础模块和kds模块,两个模块都是单独的plugin,并且...原创 2019-07-23 09:11:02 · 1184 阅读 · 0 评论 -
Android开发学习之路--Android Studio插件开发
前言因为使用了mvp和dagger,所以每次新的一个功能页面都需要重新写一堆东西,比如Activity, Fragment, Presenter,dagger等,而这些代码基本上都是大同小异,完全可以写一个模板,然后生成,略微修改便可以完成我们需要的功能。而往往我们写模板的时候就需要花费半天,有可能遇到坑需要个1天时间去,如果有个插件,定义好名字,然后自动生成所需要的所有代码那就完美了。既然决...原创 2018-09-11 21:40:53 · 765 阅读 · 0 评论 -
Android开发学习之路--React-Native混合开发初体验
准备node安装:https://nodejs.org/en/react-native官网:https://facebook.github.io/react-native/TypeScript: http://www.typescriptlang.org/docs/home.html1. Expo尝鲜1.1 环境安装:1.1.1 npm来安装create-reac...原创 2018-07-20 22:42:09 · 1331 阅读 · 0 评论 -
Android开发学习之路--Kotlin之常用表达式及函数
中缀表达式只有一个参数,用infix修饰的函数infix fun shouldBe(name:String) {} this shouldBe "666"if 表达式看一个max函数,这里的if是有返回值的,也就是a>=b返回a,否则返回bfun max(a:Int, b: Int) = if(a >= b) a else bwhen 表...原创 2018-05-06 12:00:32 · 749 阅读 · 2 评论 -
Android开发学习之路--Kotlin之Android开发使用心得和注意事项
1 @Autowired需要@JvmField注解@Autowired(name = "test")@JvmFieldvar currentDate: Long = 0当我们用到类似于阿里的ARouter的时候,会发现@Autowired不起作用,其实是注入代码为了减少反射,使用的字段赋值的方式来注入的,Kotlin 默认会生成 set/get 方法,并把属性设置为 private...原创 2018-05-10 00:27:37 · 1288 阅读 · 0 评论 -
Android开发学习之路--Kotlin之类及对象
前言1 类和继承1.1 类class MyClass {}1.2 构造函数一个主构造函数以及多个二级构造函数class Person constructor(firstName: String) {}//也可以省略constructor,写成:class Person(firstName: String) {}在@Inject的时候不能省略...原创 2018-05-01 20:05:14 · 536 阅读 · 0 评论 -
Android开发学习之路--Kotlin之基础语法
前言java代码写久了自然会想换个语言玩一下,而且kotlin作为android的官方语言,总是要学习下的,故这里先来学习下一些基本语法吧,打个小基础,后面才能游刃有余地开发。1 基础语法这里省略了很多一般的语言需要的语法,只简单介绍下开发时要用到的。1.1 定义变量:val: 不可修改的变量,类似finalval a: Int = 4 // 立刻赋值va...原创 2018-04-09 20:34:39 · 628 阅读 · 0 评论 -
Android开发学习之路--插件化基础动态代理Hook
插件化中需要使用到hook技术,这里先了解下hook技术,以方便继续看代码,既然是代理,那就先来了解下代理设计模式吧。1 代理代理,或者称为 Proxy ,简单理解就是事情我不用去做,由其他人来替我完成。1.1 无代理通过例子来学习下,首先一个接口Human,有两个方法,一个是吃饭,一个上厕所public interface Human { void eat...原创 2018-02-25 10:18:44 · 1873 阅读 · 0 评论 -
Android开发学习之路--APT技术
今年都快要过去了,也已经2个月没有写博客了,主要还是换了新工作,今年都好几家徘徊了,从最初的公司散伙,也快1年了,这么背的17年终于快要结束了。不过庆幸的是加入了目前的公司,一个暂时觉得可以锻炼自己的平台。从嵌入式到app到嵌入式android系统,这次又回到了app,希望这次可以深耕3-5年,能在移动互联网站稳脚跟。两个月的时间忙于熟悉了解公司业务,也少了自己学习的时间,机器学习还没继续,andr原创 2017-12-13 21:33:46 · 2245 阅读 · 1 评论 -
Android开发学习之路--NDK、JNI之初体验
好久没有更新博客了,最近一直在看一个仿微信项目,然后看源码并自己实现下,相信经过这个项目可以让自己了解一个项目中的代码以及种种需要注意的事项。不知不觉中博客已经快要40w访问量,而且排名也即将突破3000了。今天趁着有点时间就来完成早就想要完成的jni技术了。 说到jni可能初学者会不知道,其实就是java native interface,也就是java代码需要调用底层的c/c++代码原创 2016-02-28 17:46:31 · 18189 阅读 · 6 评论 -
Android开发学习之路--RxAndroid之lambda
RxJava的简单使用基本上也了解了,其实还有一个比较好玩的就是java8才有的lambda了。下面就来搭建下这个环境了,因为android不支持java8,所以需要用到一个开源库, retrolambda:https://github.com/evant/gradle-retrolambda。具体怎么使用基本上都有,这里简单地介绍下,首先就是下载java8了:http://www.orac原创 2016-03-12 21:20:47 · 7701 阅读 · 3 评论 -
Android开发学习之路--RxAndroid之初体验
学了一段时间android,看了部分的项目代码,然后想想老是学基础也够枯燥乏味的,那么就来学习学习新东西吧,相信很多学java的都听说过RxJava,那么android下也有RxAndroid。 RxJava最核心的两个东西是Observables(被观察者,事件源)和Subscribers(订阅者)。Observables发出一系列事件,Subscribers处理这些事件。这里的事件可原创 2016-03-11 21:53:29 · 56187 阅读 · 21 评论 -
Android开发学习之路--Notification之初体验
一般原创 2016-02-15 22:39:52 · 1820 阅读 · 0 评论 -
Android开发学习之路--Activity之Intent
窗外再次飘起了小雪,还有1周就过年了,2016年即将到来,来年不知道自己将身处何处,船到桥头自然直吧。还是继续学习吧,上次学习了Activity,那么如果是两个Activity之间,怎么从一个Activity切换到另外一个Activity呢?那便是Intent,intent中文的意思就是意图,目的的意思。也就是从个一个Activity到另一个Activity了。下面就来个例子比较直观吧。原创 2016-02-02 12:59:50 · 2060 阅读 · 0 评论 -
Android开发学习之路--Content Provider之初体验
天气说变就变,马上有变冷了,还好空气不错,阳光也不错,早起上班的车上的人也不多,公司来的同事和昨天一样一样的,可能明天会多一些吧,那就再来学习android吧。原创 2016-02-15 16:57:44 · 4324 阅读 · 0 评论 -
Android开发学习之路--Broadcast Receiver之初体验
学习了Activity组件后,这里再学习下另一个组件Broadcast Receiver组件。这里学习下自定义的Broadcast Receiver。通过按键自己发送广播,然后自己接收广播。新建MyBroadcastReceiver,代码如下:package com.example.jared.broadcasttest;import android.content.BroadcastRe原创 2016-02-13 21:32:22 · 5143 阅读 · 0 评论 -
Android开发学习之路--数据持久化之初体验
上班第一天,虽然工作上处于酱油模式,但是学习上依旧不能拉下,接着学习android的开发吧,下面就学习数据持久化,原创 2016-02-14 22:19:00 · 2882 阅读 · 1 评论 -
Android开发学习之路--Android Studio项目目录结构简介
既然已经搭建好环境了,那就对Android Studio中项目目录结构做个简单的了解了,这里以最简单的Hello工程为例子,新建好工程后看如下三个工程视图:1、Android工程manifests: AndroidManifest.xml:APP的配置信息java:主要为源代码和测试代码res:主要是资源目录,存储所有的项目资源 dra原创 2016-01-28 13:00:28 · 49904 阅读 · 2 评论 -
Android开发学习之路--Android系统架构初探
环境搭建好了,最简单的app也运行过了,那么app到底是怎么运行在手机上的,手机又到底怎么能运行这些应用,一堆的电子元器件最后可以运行这么美妙的界面,在此还是需要好好研究研究。这里从芯片及硬件模块->linux内核驱动->hal层->jni->android framework层->android app做个简单的介绍。1、芯片及硬件模块 就像人脑,电脑的cpu一样,android手原创 2016-01-29 16:48:31 · 5098 阅读 · 1 评论 -
Android开发学习之路--Activity之初体验
环境也搭建好了,android系统也基本了解了,那么接下来就可以开始学习android开发了,相信这么学下去肯定可以把android开发学习好的,再加上时而再温故下linux下的知识,看看android源码,终有一天可以让自己提高到另外一个高度。 好了,言归正传,真正地开始android开发学习之路了。 相信很多人都知道android四大组件,它们分别是活动(Activity)原创 2016-01-31 15:06:18 · 4073 阅读 · 3 评论 -
Android开发学习之路--UI之初体验
之前都是学习Activity,对于布局都没有做过学习,这里就简单学习下吧。下面看下Android Studio下有哪些控件: 这里分为Widgets,Text Fields,Containers,Date & Time和Expert。 其中Widgets微件主要是一些简单地单一的功能,像TextView用来显示一些文字信息,Button用来触发按钮,RadioButto原创 2016-02-05 16:06:19 · 5307 阅读 · 2 评论 -
Android开发学习之路--UI之基本布局
上一篇文章中主要介绍了ui的控件,这里就学习下布局吧。android的基本布局在layout下主要如图: 从上图可以看出有FrameLayout(单帧布局),LinearLayout(线性布局),TableLayout(表格布局),RelativeLayout(相对布局),GridLayout(网格布局)等。具体的布局样式,在上图中也可以简单地看出来。 这里先介绍下an原创 2016-02-06 13:58:07 · 7153 阅读 · 1 评论 -
Android开发学习之路--UI之自定义布局和控件
新的一年已经开始了,今天已经是初二了,两天没有学习了,还是要来继续学习下。一般手机的title都是actionbar,就像iphone一样可以后退,可以编辑。这里自定义布局就来实现下这个功能,首先准备下三张图片,一张用来当作背景,两张分别表示后退和编辑。新建工程UICostomViewsTest,然后自动创建工程后,新建title.xml,编写代码如下:<LinearLayout xmlns原创 2016-02-09 16:18:23 · 6014 阅读 · 0 评论 -
Android开发学习之路--Camera之初体验
顾名思义Camera就是拍照和录像的功能,像微信里面,我们想拍照传一下照片,就可以通过camera来拍照,然后存储照片,发送给好友。那么微信的app里面是不会直接通过camera api来实现的,因为系统一般都会有camera这个程序,那么直接调用camera app来实现拍照的功能不是很方便嘛,这里我们学习下。原创 2016-02-16 20:51:06 · 2667 阅读 · 3 评论