![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 57
thunder_sz
这个作者很懒,什么都没留下…
展开
-
Android系统内存相关—Binder机制(二)
简介通过思维导图和相关分解,简单的介绍对Android系统的认知,方便搭建一套比较整体的Android基础框架。本章主要介绍Android的Binder机制处理跨进程问题,其本质还是对共享内存的处理。描述Binder 实现本质 内存共享 模型 server transact replay 同步返回,挂起进程 client transact replay 同步返回,挂起进程 binder驱动原创 2021-03-27 11:07:17 · 152 阅读 · 0 评论 -
安装未知来源应用权限申请(Rxjava封装)
安装未知来源需求简介当App需要安装未知来源的应用的时候,需要开启"安装位置来源应用”的权限。实现方案 //跳转到对应的设置页面进行权限操作 private fun gotoSettingsPage() { val packageURI = Uri.parse("package:"+ activity.packageName) val intent: Intent = Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_S原创 2021-03-12 16:24:53 · 548 阅读 · 0 评论 -
Android 系统内存相关(一)
简介通过思维导图和相关分解,简单的介绍对Android系统的认知,方便搭建一套比较整体的Android基础框架。具体内容主要参考《Android内核设计》从内存基础介绍开始,无论是什么操作系统,都是要处理真正的物理内存去读取执行指令及数据,所以内存肯定是重中之重。描述操作系统 - 内存的游戏 进程间数据共享 共享内存 shared memory 申请内存 shmget shmat shmdt 全部进程需要撤销 shctl 配置共享区..原创 2021-03-01 17:50:19 · 178 阅读 · 0 评论 -
Flutter状态管理(一)——框架对比及选择
Flutter状态框架对比及选择(一)简介随着业务需求的持续迭代,对于状态的管理就显得尤为重要,数据导向的页面更新是极有效的方式,但是业务越来越多就会导致各个module之间的依赖会越来越多。这张图就反应了,当页面复杂时,如果全是有中央集权的状态控制就会显得杂乱无章,特别在定位问题时就会很头疼,还有一个很重要的原因是因为flutter在调试时报错会从runApp开始报,如果没有状态管理器输出对应的错误,很难定位是哪个数据问题造成的。本次我们主要针对Flutter-Redux和Fish-Redux的原创 2020-11-12 17:59:08 · 974 阅读 · 0 评论 -
Android插件化,加载成功后无法找到类的问题
问题现象插件加载可以成功,但是获取类时出现class not found问题原因由于工程使用的是AAB的打包方式,壳子工程代码的classloader与业务线apk的classloader不是相同classloader在加载时,使用的是壳子工程的classloader,查找类时使用的是业务线自己的classloader,导致失败。解决方式使用相同classloader...原创 2020-10-14 15:51:17 · 452 阅读 · 0 评论 -
Flutter No implementation found for method xxx on channel
问题原因很明显就是依赖没有,但是不是flutter的依赖,是Android native缺少这个方法。如果你不是直接在flutter工程生成的Android工程,或者是由其他方式使用flutter依赖时,当flutter工程引入部分带有native插件的第三方库时,就不会主动打到对应的Android工程中,引起改错误。解决方案方案一、将navtive插件当依赖引入到Android 工程,例如://magpie Android SDK debugdebugApi 'com.wuba.magpie:原创 2020-08-05 11:28:49 · 3522 阅读 · 0 评论 -
Dex动态加载问题
用build-tools的dex打包失败改用d8即可具体使用方式可参照https://developer.android.google.cn/studio/command-line/d8加载时 No such file or directoryprivate static dalvik.system.DexPathList$Element[] dalvik.system.DexPathList.makeDexElements(java.util.List,java.io.File,java.util原创 2020-07-22 14:40:43 · 1438 阅读 · 0 评论 -
Groovy简介——运行时MOP
概况 Groovy是一个动态语言,类型不用定义的语言。它运行与JVM之上,编译器会先将Groovy代码编译为Java语言,然后编译为字节码。Groovy在编译的时候会先生成AST(抽象语法树,Abstract Syntax Tree),同时Groovy也提供了AST的操作方法,也就是说在Groovy编译时可以插入一些模板方法甚至根据AST插入对应的方法。还有一个很重要的...原创 2019-11-26 16:27:21 · 892 阅读 · 0 评论 -
在安装完了证书和各种配置之后Charles仍然无法抓包问题
文章目录现象解决办法总结现象由于公司开发需要抓包工具,在配置好了charles的证书和手机的证书之后,手机访问https的地址仍然无法访问,一直提示unknownYou may need to configure your browser or application to trust the Charles Root Certificate. See SSL Proxying in th...原创 2019-10-31 11:35:41 · 5880 阅读 · 0 评论 -
Android 共享元素动画,返回时会闪一下的问题
造成的原因是因为在返回时onResume方法会进行一个共享元素的Alpha赋值,会先赋值为0,再到1,所以会有明显的闪屏。修改方式:在闪屏页面添加callbacksetExitSharedElementCallback(new TransitionCallBack());@TargetApi(Build.VERSION_CODES.LOLLIPOP)public clas...原创 2019-08-19 15:16:21 · 3250 阅读 · 1 评论 -
Android 共享元素动画不生效问题
在使用共享元素动画时,遇到了设置不生效问题,原因在于Activity被设置了全局主题,主题中没有开启共享View的支持,只需要新建Actvity主题即可<style name="TransTheme.CardDetail" parent="Theme.AppCompat.Light"> <item name="android:windowContent...原创 2019-08-01 11:18:59 · 1737 阅读 · 0 评论 -
Android反编译与Xposed所必须了解的事情(二)
一、Xposed使用步骤Gradle引用依赖 Manifest中添加meta内容识别 添加assets文件夹,创建xposed_init文件,用于hook文件识别 编写hook代码,hook对应的类和方法二、流程解析接上篇内容,依旧以打开LOG为目的,之前我们已经找到了对应的自定义log类,下面只需要打开log开关。添加Gradle依赖compileOnly 'de.rob...原创 2019-07-05 16:12:34 · 277 阅读 · 0 评论 -
组件化—依赖注入和服务定位的实践(一)
一、使用背景随着Android组件化的不断深入,各个模块之间相互分离,尽可能的做到各个module内部强内聚,并且降低对外的耦合度。IOC(Inversion of Control)原则在这个过程中发挥着至关重要的作用,控制权掌握在自己的module内,将我们需要的功能接口对外暴露,让其他业务线实现。但现在问题来了, 1、业务线实现暴露的接口后,在什么时机传递给拥...原创 2019-06-14 01:38:35 · 372 阅读 · 0 评论 -
组件化—依赖注入和服务定位的实践(二)
一、之前遗留的问题在上一篇文章中,提到了服务定位模式是如何一步一步演变最后实现跨包注册及动态匹配的,但也留了三个问题:1、有没有可能再进一步优化此方案,让初始化也变成动态的呢?2、如果实现类现在还要SDK中的其他依赖又该如何处理呢?3、每次我们在调用方法的时候都需要去初始化一下这个类对象,在有些需求里面,这个LoginService的对象其实完全可以是单例或者是在某个作用域下是单例...原创 2019-06-26 19:18:44 · 126 阅读 · 0 评论 -
NestedScrollView嵌套RecyclerView,firstVisible和lastVisible不好用
因为nestedScrollView嵌套RecyclerView之后,RecyclerView计算的高度大小最总大小,因此firstvisible永远是0,last永远是最后一个。 为了实现视频滑出屏幕就停止播放,只需要监听NestedScrollView的滑动距离,然后获取子View的位置,判断是否在范围内即可。 package com.bizrun.hibao.persona...原创 2018-12-21 17:01:26 · 1112 阅读 · 0 评论 -
热更新总结--资源文件格式
本文章主要根据阿里出的《深入探索Android热修复技术原理》后的个人总结 资源打包 resources.arsc实际上是由一个个的ResChunk拼接起来的,一般来说一个resources.arsc里面包含多个package,但是由AAPT打包只有一个package,这个package包含了APP中的所有资源信息。每个资源都在APP中都有唯一的编号,编号是一个32位数字,用16进...原创 2018-12-19 17:10:42 · 728 阅读 · 1 评论 -
热更新总结--冷启动热更新
本文章主要根据阿里出的《深入探索Android热修复技术原理》后的个人总结 一、为什么直接补丁类直接导入到补丁包中,运行类加载时会产生异常并退出?首先,因为dex加载到本地内存时,如果不存在odex文件,那么首先会执行dexopt,其中if(doVerify){ if(dvmVerifyClass(class)){ ((DexClassDef*)pCla...原创 2018-12-19 17:09:47 · 3207 阅读 · 0 评论 -
热更新总结--热部署更新
本文章主要根据阿里出的《深入探索Android热修复技术原理》后的个人总结 打补丁是通过反编译为smali然后新APK跟基线APK进行差异对比,得到最后的补丁包。类替换(关键点ArtMethod)replaceMethod(src,dest)artMethod ptrsizedfields入口Method dispatch from quick compiled cod...原创 2018-12-19 17:08:17 · 1554 阅读 · 0 评论 -
Retrofit 默认encode
Retrofit 在使用QueryMap、Query、Field和 FieldMap时,会自动在OkHttp.HttpUrl的public Builder addQueryParameter(String name, String value)方法中自动替换“ "'<>#&=”为转义字符...原创 2018-03-15 15:37:47 · 1003 阅读 · 0 评论