Android
收录我的Android学习、开发心得。
野生杂学家阿博
发现问题,解决问题,总结反思。
展开
-
Android-推荐一个视频压缩库RxFFmpeg
最近项目当中有遇到上传视频的时候,需要做合理压缩的需求。分享一下我使用的视频压缩库,希望能帮助遇到同样有视频处理的需求的小伙伴。RxFFmpeg依赖这个开源库一共有三个版本,这里贴两个版本的依赖://完整版implementation 'com.github.microshow:RxFFmpeg:4.9.0'//极速版 (预计占用 4M 左右空间),主要移除了一些不常用的编解码器implementation 'com.github.microshow:RxFFmpeg:4.9.0-lite'.原创 2022-01-17 07:32:33 · 3625 阅读 · 1 评论 -
Android-推荐一个视频播放库JZVideo
最近项目当中有用到视频播放器这个功能,分享一个我的开发心得。一般情况下,我们不会去写一个视频播放器,因为需要很多知识和播放场景考虑。分享一个我使用到的视频播放器的库,JZVideo(俗称饺子播放器)。JZVideo集成implementation 'cn.jzvd:jiaozivideoplayer:7.5.0'XML使用<cn.jzvd.JzvdStd android:id="@+id/jz_video" android:layout_width="match_paren.原创 2022-01-16 12:42:54 · 5678 阅读 · 0 评论 -
Android-调用微信支付失败的情况
最近工作中,开发的App版本需要加入微信支付、支付宝支付、QQ钱包支付功能。一般情况下,我们支付功能都是封装好的支付模块,支付方面一般不会有重大的更新。但是我却遇到了:微信支付一直调不起微信客户端,SDK一直返回-1。微信支付返回-1的情况结合我之前的开发经验,个人觉得可能有以下几种情况:微信客户端校验了应用的签名,签名不一致的情况会返回-1;手机端微信做了分身或者双开处理;我们开发使用的签名和平台的应用签名不一致,工程师和产品经理之间没有同步;我们开发使用的包名和平台中记录的包名不一致原创 2021-02-04 02:19:11 · 3026 阅读 · 0 评论 -
Android-遇到SecurityException:user 0 is restricted
最近应用做了保活服务上线之后,在oppo手机上面遇到了:java.lang.SecurityException:user 0 is restricted在查询资料之后发现,这是oppo手机上面熄灭屏幕之后,系统的电量优化导致的。我看了bugly上面的报错机型主要是:oppo R7S、oppo A53、oppo R7、oppo A33、oppo R7T。网上有人说,这并不影响App的使用。但是为了bugly的报错减少,我还是打算做出相应的处理。网络上面的建议是:try/catch,下一个版本上线看看原创 2021-02-04 01:42:30 · 456 阅读 · 0 评论 -
Android开发——AS编译失败,Invoke-customs are only supported starting with Android O
最近在开发当中遇到了一个编译失败的错误,记录一下。错误片段om.android.tools.r8.a: Invoke-customs are only supported starting with Android O (--min-api 26) at com.android.tools.r8.dex.r.a(:291) at com.android.tools.r8.dex.r.a(:98) at com.android.tools.r8.dex.r.b(:188) at com.andro原创 2020-08-23 03:19:35 · 4761 阅读 · 2 评论 -
Android性能优化——App启动优化
App启动速度是我们App的第一个体验感。在日常的Android开发或者维护当中,我们肯定少不了App启动优化。下面就来分享一个我了解到的App启动优化的方向。App启动分类App startup time冷启动耗时最多,衡量标准* Click Event->IPC->Process.start->Activity Thread->bindApplicati...原创 2020-03-27 17:03:34 · 466 阅读 · 0 评论 -
Android开发——you must set design_width_in_dp in your AndroidManifest file
在开发Android的App的时候,我们肯定要适配各种屏幕。我选择使用今日头条适配方案,但是调试的时候,我遇到了java.lang.IllegalArgumentException: you must set design_width_in_dp in your AndroidManifest file错误。从异常的信息来看是我在AndroidManifest中配置少了东西,解决办法是: &l...原创 2020-03-27 16:56:49 · 5329 阅读 · 1 评论 -
Android开发——强制取消Toast
在日常的Android开发当中,我肯定少不了Toast提示用户。我维护一个运营了上线6年的项目的时候,我们网络请求的异常状态窗口要Dialog显示,但是之前的前辈把Toast写网络请求的底层了,如果我们要改动底层网络请求框架代价太大了。我就想着能不能在直接关闭Tosat,看Toast源码的时候,我发现了cancel()方法。关闭Toast的代码在项目的ToastUtil类中加入下面方法。pu...原创 2020-03-27 16:55:20 · 2384 阅读 · 0 评论 -
Android开发——RelativeLayout.LayoutParams的使用
前言在日常的Android开发当中,我们少不了需要动态改变控件在RelativeLayout界面的位置。那么我们就需要使用到RelativeLayout.LayoutParams。RelativeLayout.LayoutParamsRelativeLayout.LayoutParams是一个RelativeLayout的布局参数,我们改变控件的就需要使用到。初始化// 包裹内容Rel...原创 2020-03-01 17:49:18 · 6691 阅读 · 0 评论 -
Android学习笔记11——RelativeLayout(相对布局)
前言上一篇博客中介绍了LinearLayout,那么这篇博客分享一下RelativeLayout(相对布局)。RelativeLayoutRelativeLayout是相对布局,允许子元素指定它们相对于父元素或兄弟元素的位置。常用属性1.android:layout_above 将控件设置在给定ID控件之上。2.android:layout_below 将控件设置在给定...原创 2018-09-17 13:40:31 · 1182 阅读 · 0 评论 -
Android性能优化——App性能优化解决方案的演进
前言在性能优化的学习当中,我知道了性能优化也是分好几个阶段的,分别是项目初期、项目壮大期、项目成熟期。不同的阶段我们有不同的性能优化要求,下面分享一下我的笔记。项目初期只关心崩溃率、不采集性能数据;没有性能检测方案、优化方案;没有排查问题手段;项目壮大期指标采集,不够全面深入;接入成熟的APM,排查手段单一;线下检测、优化,方案不成型;项目成熟期重点关注性能问题,数...原创 2020-02-29 01:11:48 · 423 阅读 · 0 评论 -
Android性能优化——性能优化的难题
前言在日常的Android开发当中,性能优化是我们Android开发必不可少的话题。那么有什么样的难题呢?结合网上的学习资料以及实际工作经验,总结如下。性能表现差App启动慢、卡顿、丢帧;内存占用高、抖动频繁;耗电、网络请求慢;崩溃率、异常率高;线上问题无从查找1.如何保证异常感知灵敏度,我们可以通过一些第三方SDK实现异常统计;2.如何复原“案发”现场(就是我们常说复现bu...原创 2020-02-29 00:45:34 · 382 阅读 · 0 评论 -
Android开发常用的String操作(Java版代码)
前言在日常的Android开发当中,我们对String的操作会比较多,收集日常开发当中可能会遇到的情况以及相关的代码。这篇博客会不断更新,有兴趣的小伙伴可以收藏一下,说不定哪天开发要用到。博客变量说明// 下面使用的变量字符串String str ="";判断第一个字符举例子,判断一个字符串的第一个字符是否是"中"。if (str.startsWith("中")) { //...原创 2020-02-28 13:55:22 · 1277 阅读 · 0 评论 -
Android开发——自定义Dialog遇到setCanceledOnTouchOutside和setCancelable无效
前言最近在维护一个项目,根据产品需求去改变自定义的Dialog的UI。我很快就修改好了,但是我遇到setCanceledOnTouchOutside(true)和setCancelable(true)出现无效的情况。setCanceledOnTouchOutside方法作用点击对话框外部区域是否允许对话框消失或者说点击屏幕或物理返回键,false不消失,true消失。setCancelab...原创 2020-02-28 13:52:55 · 3143 阅读 · 0 评论 -
AS——共享开发中好用的插件
前言在日常的开发当中,我们使用Android Studio作为编译器,我们可以安装各种插件提交我们的开发效率。分享一下我常用的插件,后期发现更多好用的插件也会在这里更新。GsonFormat根据Gson库使用的要求,将JSONObject格式的String 解析成实体类,生成get/set方法。Statistic统计代码行数,如果是做外包的小伙伴可能会经常用到,因为申请软著的时候需要你提...原创 2020-01-31 21:18:46 · 622 阅读 · 0 评论 -
Android&Kotlin——EditText禁止输入空格
前言在日常的开发当中,我们难免要使用EditText控件,那么我们怎么处理让用户不在EditText中输入空格呢?下面直接上代码Kotlin示例代码mEtName?.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(p0: Editable?) { ...原创 2020-01-19 16:25:49 · 836 阅读 · 0 评论 -
AS——打开项目遇到Your project path contains non-ASCII characters
记录一次Android Studio的导入报错,最近帮朋友搞一个项目,我把压缩包名称弄成了中文,他在解压直接在那个文件夹打开了遇到编译器提示:Error:(1, 0) Your project path contains non-ASCII characters. This will most likely cause the build to fail on Windows. Please...原创 2019-12-31 10:50:17 · 792 阅读 · 2 评论 -
AS——设置默认不打开上一次项目
在日常的开发当中,我们可能不喜欢Android Studio打开上一次的项目。下面分享一下有关的设置方法:File->Setting->Appearance&Behavior->System Settings,会出现下面界面我们把Reopen last project on startup选项去掉勾选,然后点击OK,最后重启AS就可以了。希望对Android开发的小伙...原创 2019-12-28 02:09:20 · 1100 阅读 · 0 评论 -
Android开发笔记——使用aar包的快捷方式
以前的aar使用方式android{ repositories { flatDir { dirs 'libs' } }}dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation (name:...原创 2019-12-11 14:50:46 · 174 阅读 · 0 评论 -
Android面试——2019面试心得(已获得offer)
最近出去找工作了,分享一下我在面试过程中遇到的问题,希望对Android找工作的小伙伴有帮助。1.谈谈Android事件分发。Android事件分发顺序是Activity->ViewGroup->View,都是在dispatchTouchEvent()方法开始调用。2.如何设计一个图片加载库,讲一下思路选用Glide图片加载库,使用单例模式,让应用层那边可以链式调用图片加载库,...原创 2019-10-20 14:17:53 · 1448 阅读 · 0 评论 -
Android开发——java.lang.SecurityException: Permission Denial
记录一个在日常开发当中遇到的错误:java.lang.SecurityException: Permission Denial: startForeground from pid=2345, uid=10395 requires android.permission.FOREGROUND_SERVICE.这个错误主要出现在Android 9.0的手机上面,因为Android 10还有没有覆盖。...原创 2019-09-17 16:24:44 · 6658 阅读 · 1 评论 -
Android开发——在Java项目中引用Kotlin的库出现的问题
在Android开发当中,我遇到Kotlin底层的库比Java的库好用。看到那个第三方库支持Java实现,于是我就想在Java底层项目中调用Kotlin底层库。但是我编译的时候,遇到了下面的错误错误: 无法访问Unit找不到kotlin.Unit的类文件解决方案apply plugin: 'kotlin-android'apply plugin: 'kotlin-android-ext...原创 2019-09-17 15:54:23 · 3872 阅读 · 0 评论 -
Android组件化之旅——Arouter1.4.1踩坑(二)
今天继续Android组件化之旅,记录今天遇到的组件化的问题:ARouter::: InstantRun support error, com.android.tools.fd.runtime.PathsARouter::: No mapping files were found, check your configuration please![ ]起因以及解决的办法刚开始看到报错信息,...原创 2019-09-13 21:59:49 · 3582 阅读 · 4 评论 -
开发中的adb命令
在Android开发和测试当中,我们会经常使用到adb命令,下面就分享我常用的adb命令和一些我收集到的adb命令。可能会不全面,但是我会一直更新的,对adb命令感兴趣的小伙伴可以收藏我这篇文章。1.adb的启动命令adb start-server2.adb的关闭命令adb kill-server3.adb的安装命令adb install [apk文件所在位置]4.adb查看连...原创 2019-09-13 19:27:39 · 212 阅读 · 0 评论 -
Android组件化之旅——Arouter1.4.1踩坑(一)
最近在研究Android组件化开发,先来说说组件化的好处。好处有以下几点:避免重复造轮子,可以节省开发和维护成本。可以通过组件和模块为业务基准合理安排人力,提高开发效率。不同的项目可以共用一个组件和模块,确保整体技术方案的统一性。为未来插件化共用一套底层模型做准备。今天使用阿里巴巴的Arouter路由框架开发的时候,遇到:ARouter::Compiler >>> ...原创 2019-09-12 22:46:35 · 1116 阅读 · 0 评论