Android从零开始架构
奈何若何
这个作者很懒,什么都没留下…
展开
-
Dialog中Context内存溢出最终解决方案
gralde添加api 'com.lai.weavey:loadinglayout:1.3.1'xml布局最外层添加<com.weavey.loading.lib.LoadingLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/loadin.原创 2020-10-30 18:47:50 · 575 阅读 · 0 评论 -
ARTHook非侵入式之图片检查
Bitmap内存模型API10之前Bitmap自身在Dalvik Heap中,像素存在Native API10之后像素也存放在Dalvik Heap中 API26之后像素存在Native待续。。。。原创 2020-10-15 14:45:15 · 668 阅读 · 0 评论 -
App体系化优化之内存优化(Memory Analyzer Tool + Memory Profiler)
说明:如果只是单存的内存抖动,AndroidStudio的Memory Profiler就可以分析了,具体分析过程已经有很多文章说明了,这里就不赘述,接下来要说的是内存泄露的追查。1.MAT下载MAT 下载地址:https://www.eclipse.org/mat/downloads.php下载版本:Mac OSX (Mac/Cocoa/x86_64)2.MAT安装和启动下载完成,在Downloads目录下找到MemoryAnalyzer-1.9.0.20190605-macosx.c原创 2020-10-10 10:19:50 · 292 阅读 · 0 评论 -
Android-控件架构-Dialog
public class VersionUpdateDialog extends Dialog { public VersionUpdateDialog(@NonNull Context context) { super(context); } public VersionUpdateDialog(@NonNull Context context, int themeResId) { super(context, themeResId); .原创 2020-08-07 10:02:49 · 133 阅读 · 0 评论 -
360外置插件无法加载&360RePlugin AndroidX化后的坑
具体的技术文档可以直接搜索360RePlugin官方技术文档,本文只解决问题问题一:classpath 'com.android.tools.build:gradle:3.1.4'和官方文档一样配置的,但是使用的是外部插件加载也就是说我们把插件plugin下载到sdcard,然后在RePlugin.intsall("xxx")但是发现加载成功了,然后PluginInfo pi = RePlugin.install(fileName);这里我说明下repload最好使用线程,不然直原创 2020-06-14 10:00:01 · 1550 阅读 · 1 评论 -
架构日记(十)Sophix-Hotfix集成中,友盟和阿里系jar包冲突的解决方案-离线集成
友盟推送SDK依赖部分阿里系SDK功能,其中使用并封装了TNet SDK、Network SDK、ACCS SDK三个SDK,如果与以上三个SDK冲突,必须去掉您自己使用的三个中的SDK,同时使用了alicloud httpdns SDK、alicloud utls SDK、utdid SDK ,如果与以上三个SDK冲突,您可以去掉冲突中的一个即可(注意版本兼容)。感谢您的支持与厚爱!友盟Android Push SDK与阿里集团其他库出现集成冲突的解决办法引导Android Push当前使用到的阿里原创 2020-06-03 18:46:14 · 557 阅读 · 0 评论 -
架构日记(八)Android热修复框架的集成
至于AndFix和SoPhix的原理,机制我就不赘言了,网上大把的资料,阿里云上也有非常详细的说明。本文注意介绍集成的步骤一· AndFix集成config.gradle dependencies = [ ... andfix : "com.alipay.euler:andfix:0.5.0@aar" ]base.gradleapi rootProject.ext.dependencies[原创 2020-06-02 11:03:52 · 179 阅读 · 0 评论 -
架构日记(七)Android屏幕适配分辨率限定符与smallestWidth 限定符适配原理
最终效果:在 Android Studio 中安装 ScreenMatch 插件下载插件 ScreenMatch 到本地,点击菜单栏上的 File -> Settings -> Plugins -> Install plugin from disk,然后选择我们刚刚下载的插件,最后点击 “OK”,重启 Andorid Studio 即可。如下在项目的默认 values 文件夹中需要一份 dimens.xml 文件新项目没有的话我这里提供一下<?xml ver.原创 2020-05-24 17:16:59 · 390 阅读 · 0 评论 -
架构日记(六)新建Gradle Task实现打包后上传到蒲公英
前面的文章中提到了脚本自动执行打包和安装,其实将脚本重组也是可以做到一键发布的,只是每一篇文章都有自己需要解决的问题,所以没有完全串起来实现一键打包发布。首先下面贴出蒲公英的官网地址https://www.pgyer.com蒲公英开放api地址https://www.pgyer.com/doc/view/api我们需要用到的蒲公英上传的post请求的地址https://www.pgyer.com/apiv2/app/upload剩下的细节可以自己去官网查看,接下来看代码吧原创 2020-05-22 15:11:46 · 428 阅读 · 0 评论 -
架构日记(五)多渠道打包配置
AndroidManifest.xml 里设置动态渠道变量<!--多渠道打包配置--> <meta-data android:name="UMENG_APPKEY" android:value="" /> <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_原创 2020-05-22 11:45:31 · 230 阅读 · 0 评论 -
架构日记(四)命令行打签名包和Gradle DSL 自动化构建(未完)
首先来解决一些问题:本文是Mac下AndroidStudio的命令行打包 adb: command not found解决方案:打开Android Studio 启动终端 Terminal;echo $HOMEtouch .bash_profileopen -e .bash_profile//配置自己的环境变量export ANDROID_HOME=/Users/mac/Library/Android/sdkexport PATH=${PATH}:${ANDROID_HOM原创 2020-05-21 16:50:05 · 142 阅读 · 0 评论 -
架构日记(三)模块化结构中的RxJava+Retrofit的搭建MVP模式
说到RxJava,最先想到的就是观察者模式,对于rxjava2还不了解的朋友们,可以通过这个链接先去了解一下https://www.jianshu.com/p/cd3557b1a474老规矩先来看看工程结构首先我的项目中使用了两款很不错的插件 Android ButterKinfe Plugin Plus 和 MVPPlugin第一步导入依赖,在base的gradle中//RxJava+Retrofit+okhttp3 api rootProject.ext.depend.原创 2020-05-20 23:04:53 · 188 阅读 · 0 评论 -
架构日记(二) 模块化多Moudle下的gradle配置
新的工程建立,多个Moudle的gradle的管理就是一个很繁琐的问题。你有没有见过这样“The given artifact contains a string literal with a package reference 'android.support.v4.content'”之类的问题,各种v4 v7和androidx之间的冲突,或者依赖包版本不向下兼容,或者冲突包的问题?本文采用config.gradle来统一控制整个工程的各个依赖的版本控制。代替原来的在project-gradl原创 2020-05-19 11:28:11 · 339 阅读 · 0 评论 -
架构日记(一) 模块化多Moudle下的Application引用方式
传统的项目结构中Application毫无疑问,肯定是放在app目录下的。说一说我遇到问题的场景:本人正在base moudle中新建RxJava+Retrofit+OkHttp的请求框架式,在新建拦截器Interceptor的时候有一个地方需要用到Application。这就有点尴尬了呀。其实我们完全可以换一个思路嘛,Lib模块不就是要一个Application吗,给他~Moudle base作为一个基础库或者说是公共依赖包,所有的Moudle都是需要依赖它的,那么就来一个BaseAp..原创 2020-05-18 22:32:07 · 572 阅读 · 0 评论