android
文章平均质量分 90
不近恶 不知善
这家伙很懒,都不知道写简介
展开
-
Android插件化原理及基础实现【hook篇】
插件化的理念将应用分为多个模块,分出宿主与插件用户安装宿主,动态加载插件插件化的优点按需加载、可插拔、动态更新减小apk体积,解决方法是超过65535的问题插件分开开发与编译,提高效率,降低耦合度插件化的缺点提升项目复杂度插件化框架特性dynamic-load-apkDynamicApkSmallDroidPluginVirtualAPK作者任玉刚携程wequick360滴滴四大组件支持只支持Activity只支持Activity只支持A原创 2022-05-29 15:56:02 · 1507 阅读 · 2 评论 -
Android SDK升级到31的坑(Installed Build Tools revision 31.0.0 is corrupted)
Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Manager.annotationType(): unrecognized Attribute name MODULE (class com.sun.tools.javac.util.SharedNameTable$NameImpl)原创 2022-04-01 17:35:09 · 7990 阅读 · 0 评论 -
Android逆向工程之dx工具jar2dex失败,使用d8
遇到问题在使用apktool做apk逆向工程时,我们一般都需要将apk反编译为smail,然后将要加入其中的SDK也编译成smail,然后将二者合并起来之后打包成一个新的apk,其中将SDK的jar编译为smail需要两步使用dx工具将jar转为dex,dx的工具在AndroidSDK中可以找到,dx.jar。dx --dex --output=out sdk.jar sdk2.jar... out要输出的smail目录 sdk.jar sdk2.jar… sdk的jar文件,可以是多个原创 2021-04-13 18:19:16 · 2595 阅读 · 1 评论 -
Android逆向工程之aar包转jar包找不到R文件的问题
遇到的问题目前的工作是游戏出渠道包,使用的apktool反编译apk,然后打入渠道SDK,然后回编译生成渠道包的方式在新接渠道SDK是,发现渠道的依赖包是aar,那就需要将之解压,把jar和so放入游戏包的libs中,将res放入游戏包的res目录下,再解决一些资源名重复的问题,本来以为都完工了,因为以前就是这么干的,但是打完包运行的时候,使用到SDK的地方直接报错,报错信息如下:找解决思路以上的大致意思是SDK中的代码找不到对应的R文件,那就是说aar对R文件有专门的定义,当AS依赖aar时,会原创 2021-04-12 15:55:39 · 1307 阅读 · 2 评论 -
Android字体加粗,UI小姐姐说太粗了,解决办法
最近开发Android App,UI小姐姐验收的时候说,嗯,你这个字体没加粗呀我说,好的,textStype="bold",然后屁颠屁颠的跑去给UI小姐姐看结果UI小姐姐说,这个。。怎么这么粗,就是要那种中粗,ios都有的中粗体嗯。。好吧,中粗,粗的不明显的那种粗,额,似曾相识呀,难道就是甲方爸爸提的那种五彩斑斓的黑?然后百度呀,google呀,(当然google的英文看不懂,最后还是靠csdn)最后找到的这篇文章Android中TextView字体加粗小技巧,那个兴奋呀,马上实验嗯原创 2020-11-19 11:46:56 · 4143 阅读 · 2 评论 -
OkHttp使用拦截器之后就拿不到响应内容的坑
使用OkHttp的时候想使用拦截器去拦截服务器返回的数据做一些特殊处理,但是当我使用了response.body.string()然后,返回原来的response,到最终读取响应内容是,发现读取不到了,返回的是空之后又想到了HttpLoggingInterceptor好像既能拦截内容,又不影响后续处理,解析出来源代码发现做了一个buffer复制,然后根据HttpLoggingInterceptor实现自己的拦截器,完美通过其实问题很简单,http请求就是想到于有个inputStrea原创 2020-05-09 17:22:25 · 1705 阅读 · 0 评论 -
OkHttp使用HttpLoggingInterceptor的坑:下载文件请求阶段需要等很久以及OOM
最近使用到了OkHttp,准确的说是retrofit,毕竟retrofit是okhttp的封装,但是实际上问题是处在okhttp上面使用HttpLoggingInterceptor去打印请求和响应日志,使用了level = Body正常请求没什么问题,但是当我使用这个okhttp实例去下载文件的时候出现了问题,请求很久才能拿到正文开始下载开始我以为是链接的问题,换了之后发现还是这样,经过一番定位(一行行注释),把问题定位到了HttpLoggingInterceptor拦截器上,发现添加了这个原创 2020-05-09 15:22:29 · 2464 阅读 · 1 评论 -
Kotlin中使用Dagger的坑:使用@Named限定符报错
最近开发APP使用到了Kotlin,Daager2,以为一切都和Java一样的使用,然后就经历过了kapt,@JvmField等问题之后又发生了@Named限定符问题事情的经过是这样的,使用到了retrofit,想提供两个retrofit实体使用在不同的地方(其他文章会讲到使用场景)然后就使用到了@Named限定符具体代码如下声明两个实例提供者然后就是使用,java使用没什么问题然后就遇到了接下来要讲的问题,kotlin使用的时候,显示正常使用看着没啥问题,编译,哦豁原创 2020-05-09 14:50:38 · 493 阅读 · 2 评论 -
viewpager的无限滑动
viewpager的无限轮播有两种办法一、Integer.MAX_VALUE原理是将Adapter的getCount返回Integer.MAX_VALUE,然后让viewpager的初始位置定位到Integer.MAX_VALUE / 2 的位置,这样左右就各有十几亿的滑动空间,就实现了一个无限滑动的假象(稍微优化一下,可以定位到数据源的第一个,Integer.MAX_VALUE / 2 ...原创 2020-03-18 16:06:14 · 550 阅读 · 2 评论 -
Kotlin中使用Dagger的坑:@Inject报错
最近开发App,由于学了些kotlin,感觉挺实用,比java要简洁,就用到项目中了当用到dagger是,使用kotlin写的类,@Inject注入的时候报错了注入失败了,然后我看了一下java的注入写法,以及@Scope都一样,java就没有问题然后觉得应该是kotlin注入需要特殊处理,之后就发现了这篇文章https://blog.csdn.net/qq_26585943...原创 2019-12-22 14:12:13 · 2182 阅读 · 2 评论 -
使用Glide重新加载图片时会闪烁,RecyclerView等控件
最近开发使用Glide加载图片到RecyclerView的item中的ImageView,发现重新刷新时每个ImageView都会闪烁一下在网上找了很多解决方案:1.更改RecyclerView中的 DefaultItemAnimator 类中的 animateChangeImpl() 方法,去掉透明度变化然后再将更改好的类设置给RecyclerView发现没什么用2....原创 2019-12-22 11:32:54 · 4037 阅读 · 1 评论 -
apk逆向工程之方法数超上限65535(1)
前段时间为游戏出渠道包,当拿到游戏母包的时候,有点吃惊,1.6G;虽然现在的游戏普遍都这么大,但是我接过的包一般都是3、4百兆这样子的接下来就是按照惯例打包了,自认为不会出什么问题,但是到回编译的时候,出现了一个很熟悉的错误,在写APP的时候遇到过,很多理论书籍上都写过得问题,方法数超上限(具体为什么超上限,为什么会是65535,可以看看相关资料,因为我不一定会写这方面的文章),Unsigne...原创 2019-11-26 15:33:47 · 414 阅读 · 2 评论 -
apk逆向工程之aapt生成R文件报错
最近对接一款游戏,拿到母包的时候按照以往的套路打包,想着估计没什么问题,毕竟打包这么多回了,门儿清的很。可是不好的事情还是发生了,回编译的时候报了个first type is not attr,百度了半天,都没找到解决方案(其实一开始就有解决方案了,只是我眼神不好,理解能力较差,没注意)。网上说是由于apk包是as中的aapt2打出来的,而apktool使用的是aapt,所以回编译的时候出...原创 2019-11-25 16:07:08 · 1107 阅读 · 5 评论