自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

诺~~~

不要停下探索的脚步

  • 博客(33)
  • 收藏
  • 关注

原创 Replugin 插件中MutliDex 分多包 后加载插件报错的问题解决

Replugin 插件中MutleDex分包引起的报错 解决方案

2022-12-06 01:14:24 834

原创 Tem模板脚本使用

这个模板程序的作用是方便创建各种工程的代码文件模板的,比如可以创建android中的各种mvp文件,手动创建很麻烦,而且androidStudi4.1后的模板引擎更换了成了插件,开发繁琐,所以开发这个方便大家~~Tem 资源链接:https://pan.baidu.com/s/1nSRBBBxBhpq50ULOVN3bjw提取码:i311Demo:链接:https://pan.baidu.com/s/17e_nzb5AIFMGIX_5qlnf7A提取码:zjfj一、配置环境变量可以把tem.

2022-02-22 11:23:57 1984 1

原创 Android-Launcher-LauncherApplication解析

因为这个app是Launcher,所以这个类是Android系统中的第一个Application的启动,主要做了这些事情各各私有变量的初始化工作为LauncherModel注册广播接收者初始化LauncherProviderpublic class LauncherApplication extends Application { static final String TAG = "LauncherApplication"; /* 这个是为整个Launcerapp 提供

2022-01-29 14:31:39 3087

原创 Android-Apk的安装流程分析(二)

Android app的安装流程分析

2022-01-11 17:40:08 3123

原创 Android-Apk的安装流程分析(一)

Android-app的安装流程分析

2022-01-11 17:38:31 4792

原创 Pod 常用命令

Pod 常用命令pod 安装和升级# 安装测试版$ sudo gem install cocoapods --pre# 删除老版本的程序包$ sudo gem cleanup# 升级所有程序包$ sudo gem update# 升级 gem$ sudo gem update --systempod 操作创建默认的 Podfile pod init今后升级、添加、删除框架 pod update/// 把Podfile内全部的库初始化或更新并重新安装pod i

2021-12-09 13:47:40 2778

原创 如何调用android 系统隐藏类和方法

如何调用android系统的隐藏类和方法

2021-12-08 11:26:19 2947 1

原创 ReactNative 常用命令

ReactNative 常用命令

2021-12-07 18:35:53 2346

原创 RN如何使用原生的AndroidUI组件

RN如何使用原生的android UI组件

2021-12-01 17:18:36 2626

原创 Android中的Service#bindService流程分析

Android中的Service#bindService流程分析文章目录Android中的Service#bindService流程分析一、概述二、流程分析1、Context#bindService2、ContextImpl#bindService3、ActivityManagerNative#getDefault().bindService4、ActivityManagerProxy#bindService5、ActivityManagerService6、ActivityManagerNative#o

2021-11-27 01:10:38 1536

原创 Android系统启动流程

Android系统启动流程文章目录Android系统启动流程一、概述三、流程1、init进程启动2、zygote进程---app_main.cpp3、zygote进程---ZygoteInit.java4、RuntimeInit.zygoteInit5、SystemServer.java6、ActivityManagerService一、概述android版本:7.1.2Android系统的启动从最早的BootLoader->启动linux内核->Android_init进程->a

2021-11-22 18:16:19 2851

原创 VMware下Android编译流程

VMware下Android编译流程文章目录VMware下Android编译流程一、环境二、流程1、下载VMware,然后一路安装,配置Ubuntu18.04LTS的镜像,[镜像下载地址](https://www.ubuntu.com/download/desktop)2、进入ubuntu的命令行中3、配置相关工具4、配置repo,5、建一个工作目录6、初始化仓库,用了7、如果需要特定版本8、同步源码9、等了几个小时,下载完成了,必须有success的字样才可以,不然后面编译会出错10、选择要编译的版本1

2021-11-16 15:29:00 3334

原创 MediaPipe window环境下编译指南(2)

前面的文章已经把Mediapipe的环境配置好了,已经可以编译成apk文件了接下来我们介绍下如何供android使用的aar文件在编译aar之前我先介绍下mediapipe提供了哪些可以编译的aar工程上面的这个截图对应的目录是\rootfs\home\tian\mediapipe\mediapipe\examples\android\src\java\com\google\mediapipe\appsbasic:基础工程,下面的其他工程对它有依赖具体什么含义,可以自己英文查询下

2021-11-09 12:00:07 2397

原创 MediaPipe window环境下编译指南(1)

由于MediaPipe只能在linux下编译,所有需要搭建linux的系统环境,在window系统中WindowsSubsystemLinux 是最方便快捷的linux 子系统了,开搞~~~mediapipe 官方M的文档:Hello World! on Android - mediapipe安装wls(WindowsSubsystemLinux)1、在Microsoft Store 中搜索wls,会出现很多的应用,选择一个ubuntu的系统就可以了,这里我先择了18.04的,下载安装

2021-11-09 11:54:49 1415 1

原创 Android-View-Layout布局过程分析

Android-View-Layout布局过程分析文章目录Android-View-Layout布局过程分析一、概述二、流程1、ViewRootImpl#performTraversals2、ViewRootImpl#performLayout3、View#layout(int l, int t, int r, int b)4、View#onLayout ViewGroup#onLayout5、FrameLayout#onLayout一、概述读这篇文章前,建议先看下Android-View的绘制流

2021-11-04 16:30:00 1797

原创 Android-View-Measure测量过程分析

Android-View-Measure测量过程分析文章目录Android-View-Measure测量过程分析一、概述二、问题三、分析1、整体的流程是什么2、过程分析和解读1、ViewRootImpl#performMeasure2、ViewRootImpl#performMeasure3、View#measure()4、View#onMeasure()或者ViewGroup子类#onMeasure()5、ViewGroup#measureChildWithMargins3、MeasureSpec解读4

2021-11-04 09:53:17 1249

原创 Android系统中Flag的位操作设计

Android系统中Flag的位设计在android的系统类中经常看到精妙的位设计,从而取代了繁多的boolean类型,结构紧凑例如View中的flag* |-------|-------|-------|-------| * 1 PFLAG_WANTS_FOCUS * 1 PFLAG_FOCUSED * 1

2021-11-03 12:07:47 608

原创 Android-View的绘制流程分析

Android-View的绘制流程分析文章目录Android-View的绘制流程分析一、概述二、绘制流程图三、代码分析1、View.requestLayout()2、ViewRootImpl#requestLayout()3、ViewRootImpl#scheduleTraversals()4、ViewRootImpl#TraversalRunnable5、ViewRootImpl#doTraversal()6、ViewRootImpl#performTraversals()7、ViewRootImpl#

2021-11-01 17:45:02 751 2

原创 Android动画-Animation原理解析

Android动画-Animation原理解析一、概述在android中动画分为3类,帧动画、补间动画、属性动画今天要说的就是“补间动画”,补间动画的基类是Animation,具体的实现都在TranslateAnimation、ScaleAnimation、RotateAnimation、AlphaAnimation中实现的这个动画的原理是将控件View在时间上连续的绘制,就形成了动画,但是这个动画有个2个主要缺点1、控件的本身没有移动或者旋转,位置信息没有改变,只是在绘制View的时候进行了矩阵

2021-10-29 15:35:44 1051 2

原创 Android属性动画-ValueAnimator原理解析

Android属性动画-ValueAnimator原理解析一、概述android中的属性动画的实现是通过不断的改变View的属性然后刷新,这个改变过程是通过数据的连续补帧和渐变来实现的,那么这个就需要有个脉冲的类来实现这个功能,而且这个脉冲不是随便写的,必须要根据硬件的配置和设置已经硬件环境来触发,这个过程中有个重要的实现类就是ValueAnimator,今天就来说下这个类实现的来龙去脉二、问题1、ValueAnimator的继承关系是什么,有哪些兄弟类,都什么作用?2、ValueAnimator

2021-10-28 11:47:44 1558 2

原创 ThreadLocal原理解析

ThreadLocal原理解析一、概述ThreadLocal 的含义是线程的本地变量,每个线程都有一个自己管理的独立的引用变量,这个其实就是个map(ThreadLocalMap)这个后面说这个主要作用在:在多线程中,而且每个线程都要有同样的初始值,但是每个线程的本地值,只能自己才能修改,其他线程不可以改,具有独立性真正保存数据的是ThreadLoacalMap来做的,ThreadLocal只是个操作工具而已举个例子:在Android的Looper中,为了让每个线程都有一个Looper,就是用的这

2021-10-27 10:48:57 246

原创 EventBus原理解析

EventBus原理解析一、概述EventBus我们都知道是用来做app内部的数据通信的,可以达到很好的解耦合效果,传统的的广播或则回调方式存在着代码耦合度高,代码杂乱,不宜维护的特点,EventBus使用的是订阅者/发布者模式,代码简洁,高度解耦,这个是这个框架产品的背景原因了二、整体架构这个是官方框架的图,这个图描述的结构很清晰Subscriber:这个是订阅者,订阅某个类型的消息比如onMessage(String src) 这个就订阅了接受src的消息,当然代码中还要写入@Subscrb

2021-10-26 16:31:52 1192

原创 MultiDex原理分析

MultiDex原理分析一、MultiDex是什么,解决了什么问题MultiDex 顾名思义就是对分包的Dex文件进行读取加载到ClassLoader的库android 早期的版本中,Dex文件(android对java中字节码 class文件 进行了调整,把所有的class打包到一的Dex文件中)的方法数量是有上限的65536,当一个app中的方法数量超过这个值,在app安装的时候就会抛出错误,无法安装为什么Dex的方法数量上限是65536呢?android在安装一个应用的时候其中会有一步工作是

2021-10-25 17:52:00 2501

原创 AndroidStudio ffmpeg配置

准备:1、ffmpeg库文件,编译好的,这个可以自己编译一、新建工程1、2、像上面一样创建个C++的工程二、导入ffmpeg库include:这个是放的ffmpeg的头文件lib.armeabi-v7a 这个是存放的so文件,我这里只放了armeabi-v7a,如果要放其他的abi架构可以同样放入三、配置文件1、配置gradle要注意的只有2点这个地方是上面架构 就写什么架构如果有报错这个就导入上面的配置好了gradle就配置好了2、CmakeLists的配置(重要

2021-04-22 13:57:50 278

原创 Activity的启动流程

我们经常在用startActivity这个方法,我门今天就来研究下系统究竟是怎么启动一个Activity的startActivity@Override public void startActivity(Intent intent) { mBase.startActivity(intent); }这个类是ContextWrapper,这个是Activity的...

2020-04-23 12:25:54 789

原创 一个Demo让你理解Retrofit的工作原理-动态代理技术

首先先总结下Retrofit核心的三个技术1. java的动态代理技术:2. 解析定义的Service中的各种注解,生成request,然后利用okhttp,生成response3. 利用各种设计模式,尤其是工厂模式,来适配Rxjava 还有动态配置Gson 结果转换器Retrofit 总结起来不外乎就这三点,我们今天只通过一个Demo 分析Retrofit中的动态代理,我后面的文...

2020-01-13 11:37:59 667 1

原创 服务器返回的Json中含有很多转义字符“\"”的问题

这个问题很多是因为Json中嵌套了json造成的比如:{ "A":"{\"fg\":\"dddd\"}", "B":"32146" }这里就含有" 转移字符这种是可以正常解析的

2019-12-12 10:25:58 6405

原创 android中的WebView,JS回调java中的代码线程在子线程

昨天遇到个问题,android中的WebView,js中会调用android的原生代码,但是报了异常,说子线程不能更改UI的那个异常,原来才知道,js回调到java中的方法是浏览器webView在新开的子线程做的操作,如果要更新UI必须要切换到主线程了,@JavascriptInterface private void logg(final String log) ...

2019-12-02 10:04:25 1530

原创 Java 中Object类的wait和notify方法的使用

wait和notify主要用在线程间的通信,wait:让当前调用了wait的对象的所在线程堵塞,前提是当前线程获得了同步锁,不然会抛IllegalMonitorStateException异常notify:通知调用了wait的对象继续执行,不堵塞,前提是调用了notify的对象已经出了synchronized代码块,释放了锁,才能通知成功使用wait和notify要注意几点:wait和n...

2019-11-27 13:42:02 859

原创 synchronized的几种用法

java中,当我们处理线程同步问题的时候就会用到synchronized这个关键字,下面我们介绍下synchronized的几种用法,介绍之前我们先来看下,在java 多线程中 如果没有线程同步会出现什么问题:下面这个是一个测试例子:public class MainClass { public static class MyRun implements Runnable ...

2019-11-26 17:06:31 1017

原创 如何在AndroidStudio中运行java的Main方法

1、首先在AS中导入个module 叫java_library然后这个module的gradle文件中//apply plugin: 'java-library'apply plugin: 'java'apply plugin: 'application'mainClassName = 'java.MainRun'dependencies { implementation f...

2019-11-26 14:28:58 1347

原创 AndroidStudio CMakeList配置

AndroidStudio CMakeList配置详解用户可以新建个工程,对C++ include 打勾 就是C++支持的工程了,我们这里要对build.gradle里的相关配置做了解1、build.gradle中的配置externalNativeBuild { cmake { cppFlags "" p...

2019-11-26 14:06:49 3452

原创 android源码分析-Dialog

今天给大家介绍dialog

2019-02-18 11:27:39 1378

空空如也

空空如也

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

TA关注的人

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