![](https://img-blog.csdnimg.cn/2019090300480768.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Android开发
Android开发专栏,收入我自己的开发心得,都是在实际开发当中遇到的问题。希望对看我的专栏的小伙伴有帮助
野生杂学家阿博
发现问题,解决问题,总结反思。
展开
-
Android-调用微信支付失败的情况
最近工作中,开发的App版本需要加入微信支付、支付宝支付、QQ钱包支付功能。一般情况下,我们支付功能都是封装好的支付模块,支付方面一般不会有重大的更新。但是我却遇到了:微信支付一直调不起微信客户端,SDK一直返回-1。微信支付返回-1的情况结合我之前的开发经验,个人觉得可能有以下几种情况:微信客户端校验了应用的签名,签名不一致的情况会返回-1;手机端微信做了分身或者双开处理;我们开发使用的签名和平台的应用签名不一致,工程师和产品经理之间没有同步;我们开发使用的包名和平台中记录的包名不一致原创 2021-02-04 02:19:11 · 2959 阅读 · 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 · 434 阅读 · 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 · 4656 阅读 · 2 评论 -
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 · 5259 阅读 · 1 评论 -
Android开发——强制取消Toast
在日常的Android开发当中,我肯定少不了Toast提示用户。我维护一个运营了上线6年的项目的时候,我们网络请求的异常状态窗口要Dialog显示,但是之前的前辈把Toast写网络请求的底层了,如果我们要改动底层网络请求框架代价太大了。我就想着能不能在直接关闭Tosat,看Toast源码的时候,我发现了cancel()方法。关闭Toast的代码在项目的ToastUtil类中加入下面方法。pu...原创 2020-03-27 16:55:20 · 2300 阅读 · 0 评论 -
Android开发——RelativeLayout.LayoutParams的使用
前言在日常的Android开发当中,我们少不了需要动态改变控件在RelativeLayout界面的位置。那么我们就需要使用到RelativeLayout.LayoutParams。RelativeLayout.LayoutParamsRelativeLayout.LayoutParams是一个RelativeLayout的布局参数,我们改变控件的就需要使用到。初始化// 包裹内容Rel...原创 2020-03-01 17:49:18 · 6591 阅读 · 0 评论 -
Android开发常用的String操作(Java版代码)
前言在日常的Android开发当中,我们对String的操作会比较多,收集日常开发当中可能会遇到的情况以及相关的代码。这篇博客会不断更新,有兴趣的小伙伴可以收藏一下,说不定哪天开发要用到。博客变量说明// 下面使用的变量字符串String str ="";判断第一个字符举例子,判断一个字符串的第一个字符是否是"中"。if (str.startsWith("中")) { //...原创 2020-02-28 13:55:22 · 1263 阅读 · 0 评论 -
Android开发——自定义Dialog遇到setCanceledOnTouchOutside和setCancelable无效
前言最近在维护一个项目,根据产品需求去改变自定义的Dialog的UI。我很快就修改好了,但是我遇到setCanceledOnTouchOutside(true)和setCancelable(true)出现无效的情况。setCanceledOnTouchOutside方法作用点击对话框外部区域是否允许对话框消失或者说点击屏幕或物理返回键,false不消失,true消失。setCancelab...原创 2020-02-28 13:52:55 · 3037 阅读 · 0 评论 -
Android开发笔记——使用aar包的快捷方式
以前的aar使用方式android{ repositories { flatDir { dirs 'libs' } }}dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation (name:...原创 2019-12-11 14:50:46 · 164 阅读 · 0 评论 -
Android开发——实现数字时钟
前言在最近的项目当中,我遇到一个在界面中实现系统数字时钟的需求。一看这个其实挺简单的,开个一个子线程获取当前的系统时间睡眠1分钟发送当前时间,然后利用Handler去修改当前显示的时间,直接撸代码。第一种:Handler+Thread// 初始化方法@Overridepublic void init() { // 时间变化 handler = new Handler()...原创 2019-06-05 00:13:19 · 10251 阅读 · 1 评论 -
Android开发——去除自定义Dialog出现局部背景
前言在Android开发当中,我们少不了自定义Dialog。但是今天我遇到一个比较奇葩的事情,就是自定义Dialog的时候出现局部背景没有办法去除。放一下具体情况的效果图,咳咳~图中红色框外都是局部背景,我的自定义只要显示红色框内的Dialog。困扰了我一会儿,这个问题当然难不倒我,嘿嘿,下面就来说说解决方法,看好啦!!!解决方法超级简单粗暴的,就只加入两句代码Window windo...原创 2019-04-18 00:31:53 · 775 阅读 · 0 评论 -
Android开发——打包apk遇到The destination folder does not exist or is not writeable
前言在日常的Android开发当中,我们肯定要打包apk。但是今天我打包的时候遇到一个很奇怪的问题Android The destination folder does not exist or is not writeable,大意是目标文件夹不存在或不可写。出现问题的原因以及解决办法上面有说报错的中文大意是:目标文件夹不存在或不可写。其实问题就在我们的打包界面当中图中标红的Desti...原创 2018-12-29 16:53:47 · 20026 阅读 · 9 评论 -
Android开发——集成友盟统计多渠道打包遇到的问题(一)
前言在日常的Android开发中,我们肯定要集成多渠道打包功能。但是今天我集成友盟的统计SDK开发多渠道打包的功能的时候,我遇到了All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-me...原创 2018-12-29 15:25:34 · 570 阅读 · 0 评论 -
Android开发——在Github上面创建自己的开源库
前言很多开发的小伙伴都有使用过Github上面的开源库,那么我们应该怎么创建我们的开源库呢?下面分享一下我的心得。让我们跟着这篇博客完成一个开源库的从0到1吧!创建一个Android开源库1.注册一个Github账号【传送门】https://github.com/2.Android studio创建一个项目3.在项目里面创建Android Library选择图中第二个类型,名称...原创 2018-11-25 16:26:04 · 2157 阅读 · 2 评论 -
Android开发——使用PathView框架没有办法显示动画
前言在日常开发当中我要实现动画,我们可以使用svg动画框架PathView。但是我今天遇到一个奇葩的事情,没有办法正常显示动画,我就点懵逼了。我看我的代码是没有问题的呀,能够正常执行的。问题的所在我第一次接触SVG的图片,我就点看看了一下,发现有爆红的代码,我把爆红的语言给删除了造成PathView框架加SVG没有办法显示动画。注意:我们不要修改svg文件里面的任何东西,要不然没有办法显示...原创 2018-11-21 23:42:00 · 307 阅读 · 0 评论 -
Android开发——SVG动画框架PathView的使用
前言在学习菜鸟窝的菜鸟手机助手的过程中,学习到了SVG动画框架PathView的使用,记录一下开发心得。PathView的Github地址【传送门】https://github.com/geftimov/android-pathviewPNG转SVG的工具地址【传送门】https://image.online-convert.com/convert-to-svg使用方式1.将你的sv...原创 2018-11-21 23:40:13 · 1233 阅读 · 0 评论 -
Android开发——Java代码动态改变图片颜色
前言在Android开发当中,我们会遇到多张图片需要改变背景颜色,我们不能用代码写死,但是我们setBackgroundColor方法改变是会被把我们背景变成直角的,但是从用户体验感的角度来讲是带有圆角的图片会更好一点。修改图片颜色的方法xml中android:tint="#FF8F8F8F"Java代码中imageView.setColorFilter(Color.Green);...原创 2018-11-06 11:16:39 · 3313 阅读 · 0 评论 -
Android开发——集成Tinker热更新框架出现java.lang.NoClassDefFoundError
前言在Android开发当中,Tinker热更新是很常见的使用框架,但是我今天在集成的时候却出现异响不到的事情,出现bug了。应用启动出现Tinker.UncaughtHandler: TinkerUncaughtHandler catch exception:java.lang.NoClassDefFoundError: Failed resolution of: Lcom/tencent/t...原创 2018-11-01 20:42:54 · 3126 阅读 · 4 评论 -
Android开发——Java代码动态改变颜色字体的方法
前言在日常的Android开发中,我们一定会遇到需要用Java代码动态改变字体颜色。在这里分享一下我知道的Java动态改变字体颜色。Java代码改变颜色的字体的方法1.利用 Android原生API提供的颜色资源textView.setTextColor(Color.RED);2.解析需求的色号(1)textView.setTextColor(Color.parseColor("#F...原创 2018-11-01 20:11:42 · 4705 阅读 · 0 评论 -
Android开发——在日常编码中使用Java8的特性
前言在日常的开发当中,我们发现Java8的特性能帮助我们减少部分的代码。那么我们要怎么才能在Android开发当中使用Java8的特性呢?下面分享一下我的方法,希望对Android开发的小伙伴有帮助。使用Java8特性的方法在model里面的build.gradle文件中android{}加入下面的代码android{ compileOptions { target...原创 2018-10-25 10:15:47 · 651 阅读 · 4 评论 -
Android开发——集成友盟社会化分享遇到的坑(一)
前言在很多App开发当中都有社会化分享,我一般都是集成友盟的社会化分享功能。这次开发公司的App需要集成微信、朋友圈、QQ和QQ空间。我是集成第三方成功了,但是在QQ分享的时候出现了意外,第一次出现“Error该平台不支持纯文本分享”,让我最郁闷的是我分享的是链接加图片,然后第二次点击能正常分享。按照开发的角度来说这是一个BUG,出现BUG我们要去解决啊!可是我在网上和Share SDK论坛没有找到原创 2017-11-07 10:47:02 · 2228 阅读 · 0 评论 -
Android开发——实现背景颜色渐变效果
前言在Android开发当中,我们肯定会接到有业务需求是:让APP的某一些背景颜色产生渐变效果。那我们应该怎么去实现呢?接下就是我要为大家介绍的了。效果图 这是需求要达到的效果。接下来说一下是怎么实现的吧!实现步骤第一步:在res/drawable中创建一个名称background_gradient.xml(名称看个人)<?xml version="1.0" encoding="utf-8"?>原创 2017-11-15 18:12:36 · 29982 阅读 · 6 评论 -
Android开发——半边圆角按钮的实现
前言在实际开发的界面搭建的需求当中会出现:一边直角,一边圆角的按钮。遇到这样的界面搭建,我们应该怎么去实现呢?我给搭建分享一下我的搭建xml。先上效果图 这是我工作的时候,界面需求的半边圆角的按钮。实现步骤第一步:就是在res/drawable中创建login_code.xml(命名主要看个人)<?xml version="1.0" encoding="utf-8"?><shape xmlns:原创 2017-11-16 19:23:42 · 4601 阅读 · 0 评论 -
Android开发——java.lang.IndexOutOfBoundsException
起因在开发当中,难免会遇到程序异常。在这里和大家分享的是java.lang.IndexOutOfBoundsException访问下标越界异常,是由于我写代码写的有点懵了,忘记了这个数组长度只有5个,结果我访问了第6个元素,就产生了异常。突然老脸一红,犯了个这样一个错误。上报错原图吧: 经过(解决办法)异常显示:我的下标只有5个,从0,1,2,3,4中选择访问,但是我最后访问下标5就出现这个异常了原创 2017-12-13 11:37:23 · 1549 阅读 · 0 评论 -
Android开发——利用ViewPager实现显示多个item无限轮播+点击事件监听
前言在许多APP中,我们都会看到有广告无限轮播的UI。我们公司的项目也有这个需求,我本来是想利用GitHub上的第三方去实现的,但是我们公司有要显示多个item同时显示进行无限轮播,我只好自己写一个。效果图 实现多个item进行无限轮播,我们要求是实现3个item进行无限轮播并且添加点击事件。我做出的效果是这样的。源代码布局文件XML实现多个item,需要在布原创 2018-01-20 16:52:15 · 2426 阅读 · 0 评论 -
Android开发——ClipboardManager.setText()过期解决办法
前言在最近的Android开发当中,我遇到了ClipboardManager.setText(); 这个方法过期了。为了不影响高版本的手机使用,我找度娘翻资料终于让我找到解决的办法了。希望对看我的博客的人有帮助!过期的代码图解决的代码//点击事件ClickableSpan cspan = new ClickableSpan() { @Override ...原创 2018-02-28 17:40:41 · 3877 阅读 · 0 评论 -
Android开发——集成友盟社会化分享遇到的坑(二)
前言从工作到现在遇到了集成友盟社会化分享第二个坑,集成最新的版的友盟社会化分享SDK遇见了一个之前没有遇到过的程序错误 java.lang.NoClassDeFoundError:Failed resolution of:Lcom/umeng/commonsdk/statistics/common/DeviceConfig。调试的时候,一启动就炸了。错误的日志图 我找了很久发现没有...原创 2018-03-01 15:35:53 · 3849 阅读 · 0 评论 -
Android开发——集成有盾SDK遇到的坑(一)
前言在Android应用开发当中,我们需要集成一些第三方SDK实现一些我们想要的功能。我们项目需要实现人脸识别功能,我们集成的是有盾SDK。在集成有盾SDK遇到一些问题,在这里和大家分享一下,希望对小伙伴们的开发有帮助。问题复现集成有盾SDK成功之后,在运行使用时发现跳转不到有盾认证的界面。一旦点击使用有盾的身份认证是就会出现图中的错误java.lang.NoClassDefFound...原创 2018-03-14 14:57:06 · 1404 阅读 · 4 评论 -
Android开发——解决ScrollView嵌套ListView的冲突
前言在开发当中我们需要实现一些滑动的界面效果,但是我们会出现多重滑动布局而发生组件冲突。试了网上的很多方法,我在这里和大家分享一下我解决ScrollView嵌套ListView冲突的方法。我的解决方法有两种: 1.自定义ScrollView,重写onInterceptTouchEvent()方法; 2.自定义ListView,重写onMeasure方法。1.自定义Scrll...原创 2018-03-16 14:28:14 · 297 阅读 · 0 评论 -
Android开发——Package is not specified in the manifest file
前言在开发当中难免不会遇到代码重构,我这次在开发中遇到的是Package is not specified in the manifest file,这是表示清单文件中没有指定包。复现这个错误的出现过程这个错误是我在xml文件当中需要Extract dimension resource时候出现的。 解决的办法很尴尬的事情出现,原来我删除之前没有用的资源的时候,不小心将Andr...原创 2018-03-22 10:31:20 · 1727 阅读 · 1 评论 -
Android开发——国际化
前言Android国际化是让我们的APP语言切换到国外的语言,让外国人能使用我的APP。那我们要怎么做才能国际化呢?下面是我学习国际化的一些收获。国际化的分类 1.Android 文本资源国际化 2.Android 图片资源国际化Android文本资源国际化新建一个中文资源文件夹values-zh strings.xml2...原创 2018-04-25 23:10:01 · 1107 阅读 · 0 评论 -
Andorid开发——Error:Execution failed for task ':app:lintVitalRelease'.
前言在日常的开发当中,我们一点会遇到打包apk测试。今天公司要我打包apk测试,可是按照正常流程打包的时候遇到了打包错误。下面是我解决错误的过程。Error:Execution failed for task ‘:app:lintVitalRelease’.Android studio打包apk时,显示以下错误 Error:Execution failed for task ‘...原创 2018-04-16 15:31:42 · 988 阅读 · 0 评论 -
Android开发——集成友盟统计遇到的坑(一)
前言在许多的项目开发当中,都会遇到移动统计的业务需求。移动的统计SDK有很多种,我们公司有一个项目需要集成友盟的移动统计SDK。第一次集成移动统计SDK,看官方的文档集成遇到了坑。下面记录我遇到的坑,希望对集成友盟统计SDK的小伙伴有帮助。问题的复现 在model中build.gradle文件当中如上图那样集成,编译的时候没有报错。但是运行的时候出现如下截图的报错 显示的原因是...原创 2018-05-23 18:00:52 · 9134 阅读 · 2 评论 -
Android开发——友盟多渠道打包方法
前言在很多项目开发完成,都是需要上架很多应用市场和一些推广渠道的。那么我们要怎么辨别用户的渠道来源呢?友盟的多渠道打包就能解决我们手动打包的难题,那样我们就不用一个个包去打了。友盟多渠道打包友盟就提供了多渠道打包的方式,可用于渠道统计等。 我们可以通过Android studio的build.gradle文件,简单配置后就可以实现自动打所有渠道包。下面是友盟多渠道打包的实现步骤1....原创 2018-05-23 19:48:22 · 1455 阅读 · 0 评论 -
Android开发——应用宝推广渠道出现MD5值重复,请勿重复上传
起因开发的小伙伴们,肯定遇到过运营的同学需要我们提供不同的推广渠道apk包。但是由于一些人为操作失误,会出现根据apk文件MD5值判断,该文件已经上传过了,请勿重复上传。问题的出现 这是运营的同学在应用宝上传渠道推广包出现的问题。想要重新上传,就要改变MD5值。解决方法 解决方法就是: 添加注册或者修改一些代码的配置。就可以改变我们打包产生MD5值。希望对开发...原创 2018-07-04 18:48:18 · 1415 阅读 · 0 评论 -
Android开发——集成友盟社会分享遇到的坑(三)
前言在实际的APP开发当中,我们肯定会遇到社会分享功能实现的需求。我之前的开发主要实现的QQ和微信的分享,这次我们新项目中有需求是:应用中需要实现新浪微博的社会化分享。遇到的问题我在新浪微博开放平台 中申请的开发需要用到的只有APP KEY、APP Secret两个参数,惯性认为新浪微博和QQ、微信分享是一样的,只需要输入两个参数的。当我只输入两个参数的时候,问题出现了 我还需要...原创 2018-07-06 20:28:45 · 598 阅读 · 0 评论 -
Android开发——常用的代码混淆配置
前言在Android开发当中,必不可少的是混淆配置。可是我们要做代码混淆呢?我来跟大家分享一下我开发的时候做代码混淆文件配置吧!代码混淆的好处代码混淆,增加逆向之后的解读的难度;精简代码,删掉没有用到的代码,减小apk的体积。Android混淆配置分类1.基本的混淆指令# 代码混淆压缩比,在0~7之间,默认为5,一般不需要改-optimization...原创 2018-07-06 22:07:33 · 2569 阅读 · 0 评论 -
Android开发——debug模式配置正式签名
前言Android开发的小伙伴,肯定会遇到debug模式集成友盟分享的时候,发现签名与微信开放平台的不一致导致报错。如果每一次打包是不是太麻烦了呢?我分享一下我的在debug模式中,配置正式打包签名。配置过程1.在model的build.gradle文件中指定签名文件android{ signingConfigs { release { ...原创 2018-07-07 11:20:24 · 4746 阅读 · 0 评论 -
Android开发——解析App启动页(Splash)黑/白闪屏现象
前言我在开发App的时候,出现App在启动会出现短暂的黑/白闪屏现象。这样现象对用户的体验感是会产生不好的影响,于是我就研究这个现象的起因和解决办法。不负有心人,我在翻了很多博客,踩完坑之后找到起因和解决办法。App启动页(Splash)黑/白闪屏现象的起因1.第一种说法 当我们启动一个App的时候,系统会检查是否存在这样一个进程。如果这个进程不存在,就是冷启动。系统和Ap...原创 2018-07-07 20:19:14 · 1836 阅读 · 0 评论 -
Android开发——改变状态栏字体图标颜色(简单粗暴)
前言在实际的Android开发当中,由于国内很多Android厂商对系统的做法不一致。所以有部分手机的状态栏默认颜色是白色的,那么如果我们开发的应用是白色就会看不清楚状态栏的字体和图标颜色,影响我们应用的整体体验感。我之前遇到也很头疼,看了很多博客发现并没有我想要的效果,我结合网上的博客写出了一个属于我的方法(如有雷同,纯属巧合)。解决方法 /** * 界面设置状态...原创 2018-07-30 17:57:12 · 6533 阅读 · 18 评论