- 博客(62)
- 收藏
- 关注
原创 Android 升级签名算法从SHA1withRSA 升级到SHA256withRSA
想到要修改这个问题 是因为收到下面整改通知 要求我们更新签名文件的签名算法,看到这个问题都懵了呀 虽然打包天天用签名文件 但是从来没关注过他呀开发者自查: 不要使用已经过时或不安全的弱算法,确保签名证书使用了更强的签名算法, 如 SHA-2(其中包括 SHA-256 和 SHA-512)。然后就想着查看下签名信息:首先 查看签名信息有三种方法,第一种使用JDK的keytool -printcert -jarfile apk。
2023-12-14 16:39:23
1445
原创 Mac下Android studo 配置svn
Android studio 配置svn1:新建一个空项目2:按照图示,选择subversion3:点击+号 ,把svn地址填进去就好了4:后面直接选择一个目录 checkout就行了
2020-07-07 17:21:00
514
原创 Android stuio在MainActivity中运行java的main方法
1:还是按照之前Android的项目配置2:在local.properties中配置自己的sdk(我的是mac)#Thu May 28 16:49:10 CST 2020sdk.dir=/Users/menglong/Library/Android/sdk3:在 ideal/grad le.xml的<GradleProjectSettings>标签中配置<option name="delegatedBuild" value="false" />这行如:&l
2020-05-29 15:41:19
1335
原创 Android高级-组件化-路由管理器完成版实践
前面我们使用APT_JavaPoet完成了组件化路由框架搭建即:1:通过添加自定义注解ARouter,通过对应的注解处理器动态扫描含有ARouter注解的Activity2:通过JavaPoet生成对应的Group路由和Path路由3:通过动态添加注解Parameter,通过对应的注解处理器动态臊面含有Parameter注解的属性以及对应的Activity,完成传参这节主要解决...
2020-04-14 13:25:40
386
转载 Java-设计模式之- 装饰模式VS建造者模式
一 比较:相同点: 建造者模式是所有的部件在内部组装完毕之后,然后显示出来, 装饰模式似乎与其有着共同之处,那就是你不能在人前一件一件 地 穿衣服,你肯定会在某个别人看不见的地方把衣服穿好,才出来见人的。不同点: 建造者模式要求建造的过程必须是稳定的。 而装饰模式的建造过程不是稳定的,衣服你可以先穿裤子,再穿褂子,或者干脆不穿褂子,穿个短袖等...
2020-04-09 14:42:43
576
转载 设计模式系列
创建型模式:设计模式之工厂模式(Factory Pattern)设计模式之抽象工厂模式(Abstract Factory Pattern)设计模式之建造者模式(Builder Pattern)设计模式之原型模式(Prototype Pattern)设计模式之单例模式(Singleton Pattern)结构型模式:设计模式之适配器模式(Adapter Pattern)设计模式之桥接模式...
2020-04-09 13:08:03
131
原创 Android架构师-组件化-APT生成路由动态参数类文件 8
上篇文章中,我们已经将路由数据创建完毕,在app的application中也将所有activity动态添加到集合汇总,但是问题是没有动态扫描到,这篇文章我们来解决这个问题以及动态参数如何传递?1:动态参数传递:常规参数接收:实现敏捷开发最终的形态是下图的样式,...
2020-04-07 13:47:27
411
原创 Android架构师-组件化-组件化APT生成路由Group和Path文件 7
上文 即组件化文章6中,我们遗留的问题是在app中通过RouterManager去add每一个Activity,这样操作很耗时,之前我们也说过,可以在ARouterProcessor,即注解处理器中动态扫描到添加了ARouter注解的文件,然后在process中动态解析,我们现在主要来完成这一步操作目标:我们需要完成以下两个文件的生成1:首先我们需要知道我们要通过注解处理器生成的目标...
2020-04-07 09:16:09
499
原创 Android架构师-组件化-组件化项目部署2
组件化项目部署学习目录一:组件化项目的意义:面试技巧:资历够了,如何在最短时间打动面试官?全是组件化开发开发需求:不相互依赖,可以项目销户,任意组合,高度解耦团队效率:分模块打包,测试,统一版本管理(每个模块都能进行版本管理)我们看下大公司的:组件化可以将所有模块进行高度隔离 ,比如说在订单模块中调用了我的内容/信息可以任意将两个模块组装成一个新的app...
2020-04-06 10:29:36
162
原创 Android架构师-组件化-Gradle语法(全局gradle配置)1
组件化共分为8节课程组件化第一节:Gradle语法环境:什么是Gradle:是一种编程思想代码+详解样式:第一行代码:注意查看打印;Build-Toggle view第一种打印字符串的方式:println(“hello gradle”)第二种打印字符串的方式println "hello studio"apply plugin: 'com.a...
2020-04-06 10:29:14
499
原创 Android架构师-Android中的Context-初步分析Android中Context的实现-装饰者模式
尊重原创:https://blog.youkuaiyun.com/abm1993/article/details/82968235说到Context,大家一定非常熟悉,Android中的很多操作都和Context有关,比如打开activity、发送广播、打开本包下文件夹和数据库、获取classLoader、获取资源等等。那么这个Context究竟是何方神圣,我们不得而知,仅仅止步于如何使用Context,...
2020-04-06 10:28:58
280
原创 Android高级-揭秘IOC框架
什么是DIP ,IOC,DI,IOC容器DIP Dependency inverse Principle 依赖倒置原则强调系统的“高层组件”不应当依赖于“底层组件”,并且不论是“高层组件”还是“底层组件”都应当依赖于抽象,抽象不应当依赖于实现,实现应当依赖于抽象(软件设计原则)IOC Invrse of Control 控制反转一种反转刘,依赖和接口的方式,就是将控制权“往高...
2020-04-06 09:14:06
312
原创 Android高级-架构师-PMS源码解析以及apk安装原理(反向推理)
PMS指的是PackageManagerService1:什么是PMS 即PackageManagerServicePackageManagerService 负责应用程序的安装,卸载,应用信息查询 一个应用对应一个包PackageManagerService 类关系图下图的左侧是Client端,其余的右侧是Servier端从上层调用的...
2020-04-06 09:13:55
1394
原创 Android高级-架构师-Binder的架构设计
我们通过一个Demo将AIDL的实现,然后明白他的调用过程。方便后面的源码学习这个Demo主要是模拟qq授权登录的过程:从Binder_A,点击QQ登录,跳转到Binder_B(假装为QQ)登录获取授权,授权成功后再调用Binder_A,将结果返回,完成登录。首先我们先准备Binder_B,因为它需要先向Binder注册成为ServiceManager,并提供哪些方法?1:首先准备Bi...
2020-04-06 09:13:44
110
原创 Android架构师-组件化-组件模块间交互 3
1:子模块间(order/personal)相互交互Module间怎么交互(包括跳转,传参等等)比如:personal子模块需要跳转到order子模块怎么办?实现方案一:类加载技术交互但是这种方法很容易出错实现方案二:全局map记录信息这种方式我们来分析一下,我们看一下当我们的config.gradle的isRelease为true的时候,我们Build A...
2020-04-06 09:13:26
468
原创 Android架构师-组件化-组件化APT介绍与使用 4
一:什么是APT1:定义对于注解,可以查看前面的文章2:结构体语言(APT是结构体语言)3:Element程序元素4:需要掌握的API
2020-04-03 14:09:25
296
原创 Android架构师-组件化-组件化APT高级用法JavaPoet 5
一:什么是JavaPoet1:定义项目主页及源码:https://github.com/square/javapoet对我们前一章的内容做了一个封装,实现过程稍微有点不一样,传统的写法:从包名--》类---》属性--》方法 正序JavaPoet:方法--》属性---》类---》包 倒序2:依赖JavaPoet库使用JavaPoet有Retrofit和...
2020-04-03 14:09:06
241
原创 Android架构师-组件化-组件化路由架构设计 6
一:思考: 在组件化架构中,我们需要通过APT和JavaPoet技术生成什么样的类文件呢组件化路由架构设计图:思考:1:为什么要组名,为什么不直接通过path路径来取Class类对象呢 例如:组名app 组名order 组名personal比如组名有:app ,那么对应的路径的详细的Class类文件,那么这个文件就是ARouter$Path$$a...
2020-04-03 14:08:49
195
原创 Android 高级-IBinder的frameWork层分析
一、概述1.1 Binder架构binder在framework层,采用JNI技术来调用native(C/C++)层的binder架构,从而为上层应用程序提供服务。 看过binder系列之前的文章,我们知道native层中,binder是C/S架构,分为Bn端(Server)和Bp端(Client)。对于java层在命名与架构上非常相近,同样实现了一套IPC通信架构。图解:...
2020-04-03 14:07:35
502
原创 Android高级-架构师-Binder核心原理2
本篇文章转载自:https://www.jianshu.com/p/429a1ff3560c写给 Android 应用工程师的 Binder 原理剖析一. 前言这篇文章我酝酿了很久,参考了很多资料,读了很多源码,却依旧不敢下笔。生怕自己理解上还有偏差,对大家造成误解,贻笑大方。又怕自己理解不够透彻,无法用清晰直白的文字准确的表达出 Binder 的设计精髓。直到今天提笔写作时还依...
2020-04-03 14:07:24
221
原创 Android高级-架构师-ActivityManagerService的使用场景
ActivityManagerService的使用场景2:什么是ActivityManagerService从上图我们可以知道,四大组件(Activity,Service,ContentProvider,BrocastReceiver)的使用最后都由它来负责最后调用到Android源码。3:组件与ActivityManagerService的进程通信方式4:Ac...
2020-04-03 14:07:12
201
原创 Android高级-架构师-Binder核心原理1
1:什么是Binder?Binder可以实现进程与进程之间的通信。 (1)为什么感觉Binder很陌生(2)为什么要学习Binder Binder在相当于一个服务接入点,我提供了服务,你要对接我,我给你提供一个接入点,这个接入点就是Binder而对于客户端而言,binder可以看成是通向某个管道的入口,要想和某个服务进行通讯,首先要建立这个管道。...
2020-04-03 14:06:57
239
原创 Android高级-架构师-UML建模
AOP面向切面架构设计面向切面思想的之集中式登录架构设计 第一种方式 使用动态代理 可以实现切面设计简单例子实现上述功能---涉及到JDK动态代理(动态代理只能代理接口)https://blog.youkuaiyun.com/yaomingyang/article/det...
2020-04-03 14:06:46
128
原创 Android高级-架构师-Handler Message源码分析及手写实现2
1:Handler+Message原理分析Handler的sendMessage方法会调用Handler的enqueueMessage private boolean enqueueMessage(MessageQueue queue, Message msg, long uptimeMillis) { msg.target = this; if...
2020-04-03 14:06:34
310
原创 Android高级-架构师-Handler Message源码分析及手写实现1
我们都用过Handler,也知道handler有两种使用方式,目录* 1、Handler内存泄露测试* 2、为什么不能在子线程创建Handler* 3、textView.setText()只能在主线程执行,这句话是错误!* 4、new Handler()两种写法有什么区别?* 5、ThreadLocal用法和原理1:实现方式1:第一种 private Hand...
2020-04-03 14:06:24
286
原创 Android关于Scheme协议(分享页面跳转到app页面)
这周公司的需求,app端通过微信分享到朋友圈的链接,点击按钮调起app的指定页面类似于下面的小例子Scheme协议Scheme是一种页面跳转协议,和网站通过URL的形式访问一样,APP同样可以通过这种方式进行跳转,它可以很方便的满足我们在一些场景中的需求:当应用接收到Push,点击通知栏消息跳转到特定页面,比如商品详情等。 通过服务器下发的跳转路径,客户端可以根据路径跳转相应...
2020-02-21 15:54:57
3133
原创 Android高级-NDK-shell语法详解-变量的定义和使用(脚本语言)
Shell编程shell语法为什么要学习这课堂android在运行的时候,特别是编译shell是运行在linux系统上的1:什么是shellShell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。...
2019-12-27 10:10:10
343
原创 Android高级-NDK-Android.mk基础
1:Android.mk简介2 Android.mk的基本格式my-dir是有编译系统提供的的宏函数,返回的是当前文件的路径CLEAR_VAS 是由编译器提供的变量,GUN片段,可以清除除了LOCAL_PATH以外的以LOCAL开头的变量,如LOCAL_MODULE,LOCAL_SRC_FILES等,是因为编译器在单次执行中会多解析多个构建文件和模块定义,而Lo...
2019-12-26 17:05:53
208
原创 Android高级-NDK-C++MakeFile走读与语法基础
1:什么是makefile1:Makefile:定义makefile定义了一系列的规则来制定,哪些文件需要先编译,哪些文件需要重新编译,如何进行链接等操作makefile就是“自动化编译”,告诉make命令如何编译和链接2:Makefile里面有什么: 1:显示规则 2:隐晦规则 3:变量定义 4:文件指示(引用 指定makefile有效部分)...
2019-12-26 14:32:03
312
原创 Android高级-NDK-C++编译原理与语法详解
1:编译流程:编译范围四大过程:1:预处理2:编译3:汇编4:链接1:预处理 1 完成宏替换,文件引入,以及去除空行,注释等,为下一步的编译做准备 2 也就是堆各种预处理命令进行处理,包括头文件的包含,宏定义的扩展,条件编译的选择等编译流程: 2:编译: 1 将预处理后的代码编译成汇编代码,在这个阶段中没首先要检查diama...
2019-12-26 13:51:11
443
原创 Android高级-NDK-C/C++基础篇
1:类的构造和析构、友元函数C++是基于c扩展,增加了面向对象的语言。面向对象多了类,我们看c++如何创建类新建头文件student.h在student.h中 创建一个student.class#pragma once#ifdef Student_H#endif Student_Hclass Student { int i;public: /...
2019-12-26 11:20:17
283
原创 Android高级-NDK-C/C++基础篇
1:函数:2:函数定义在程序中测试一下;C语言执行是从上而下执行。是由函数组成的可执行文件。C是以函数为基础,而java是以类为基础,类作为一个对象,方法可以写在类中。而C是函数组成的,当我们设计一个程序,会产生很高的耦合,而头文件就相当于一个接口,每一个接口,每一个类都有一个接口,如果我想调用这个类,可以直接把这个接口,即.h文件引入进来就可以了,不用引入.cpp...
2019-12-20 17:54:01
444
1
原创 自定义View在指定范围内随手指移动而移动
上图:代码:public class MyTouchView extends View{ private Bitmap mBitmap; private int mStartX,mStartY; private int mLeft,mTop,mRight,mBottom; private int mBitWidth,mBitHeight; p...
2019-12-13 14:35:34
488
原创 Android高级-阿里VLayout使用和原理分析
VLayout 概念定义:VLayout全程VirtuaLayout,它是一个针对RecyclerView的LayoutManager扩展,主要提供一整套布局方案和布局间的组件复用的问题。由阿里团队开发,已经运用在手机淘宝项目上。2017年3月份开源。它通过定制化的LayoutManager,接管整个RecyclerView布局逻辑。使用: implementation...
2019-12-12 16:41:43
1849
原创 Android高级-SVG矢量图形打造不规则的自定义控件
全面了解SVG的特性SVG概念1:SVG定义SVG的全称是Scalable Vector Graphics,叫可缩放矢量图形ps:擎,是借用机器工业的同名术语,表明在整个系统中的核心地位。也可以称之为“支持应用的底层函数库”或者说是对特定应用的一种抽象。三维引擎需要解决场景构造、对象处理、场景渲染、事件处理、碰撞检测等问题三维图像引擎:OpenGL或DirectX2:S...
2019-12-11 16:41:08
732
1
原创 Android高级-自定义控件
分类:1:自绘控件:动画,显示加载,显示图表,没有对外界交互 2:组合控件:recyclviewId的Item 3:继承控件:对系统控件进行修改 4:事件类控件:对事件冲突的处理 5:容器类控件:流式布局,百分比布局这些容器类控件,可以对子控件进行重新摆放 我们用demo分析自定义控件;如图所示:实...
2019-12-11 11:10:53
313
原创 Android高级-Material Design交互设计-沉浸式和CardView的分析和兼容原理
Android的沉浸式是从Android4.4开始的有三种方式可以设置沉浸式:一种是设置Style,一种是代码的方式,还有一种是布局里添加占位状态栏Style<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. -...
2019-12-05 15:40:46
442
原创 Android高级-Material Design交互设计
概念主题这三个必须要求API 在21以上如果要兼容21以下的 就要使用兼容包:兼容主题主题常用属性ColorAccent 强调色常用控件常用动画Demo省略一堆API介绍压缩的太狠了,哈哈哈 下面的高45dp的黑色长框就是要实现的效果<?xml version="1.0" encoding="utf-...
2019-12-02 14:20:51
805
原创 Android高级-网易云音乐屏幕适配
为什么要进行屏幕适配屏幕碎片化表现为以下几个方面:1:屏幕尺寸碎片化:2:屏幕密度碎片化3:厂商碎片化:水滴屏,刘海屏屏幕适配常见方式二谷歌推出的百分比布局手写百分比布局;为什么百分比布局要这么写:子控件的属性的创建依赖于父容器的LayoutParams,查看源码可得。。。所以如果实现自定义布...
2019-11-27 13:53:00
1568
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人