
Android--开发
文章平均质量分 77
Android开发文章
ChatGPTer
我的新书《Android App开发入门与实战》已由人民邮电出版社出版,欢迎购买。
展开
-
10个Android开发必看的GitHub开源项目
10个Android开发必看的Github开源项目原创 2022-04-04 09:06:34 · 5401 阅读 · 2 评论 -
『一篇就够了系列』关于JVM,这里有你想知道的一切
JDK = JRE + Development/debugging toolsJRE = JVM + Java Packages Classes(like util, math, lang, awt,swing etc)+runtime libraries.JVM = Class loader system + runtime data area + Execution Engine.原创 2020-08-27 20:06:24 · 489 阅读 · 0 评论 -
Flutter编译卡在Running Gradle task ‘assembleDebug‘...
可能出现的场景:项目变更目录有时我们将项目移动到了其它位置,然后重新编译运行,就会出现这样的问题。比如从D:…换成了E:…变更了Gradle Version比如从5.4.1换成了5.6.2,由于网络问题下载速度可能不会那么快,所以导致了一直卡在此处。解决方案删除根目录级的build文件夹:下载离线Gradle版本下载后解压到/.gradle/wrapper/dists/目...原创 2020-03-07 11:10:12 · 3060 阅读 · 0 评论 -
常用Git命令小记
在本地commit后,但还未push到远端。我们可以使用如下命令撤销本地所有提交撤销本地commit: git reset HEAD~原创 2021-05-19 00:03:30 · 248 阅读 · 2 评论 -
JCenter已经提桶跑路,是时候学会上传到Maven Central了
用了这么多年的JCenter,终于要“跑路”了,还是有点依依不舍的。详情可以参见本公众号的这篇文章:https://mp.weixin.qq.com/s/rgqSMyF9ROs-WOvK_aJZNQ以前也写过JCenter上传的方法:《2020最新通过novoda上传到JCenter.原创 2021-04-03 22:42:04 · 2387 阅读 · 4 评论 -
什么是xapk文件?
有时候我们会遇到.xapk后缀的Android安装包,而且一般移动设备还不能直接安装,需要专门的xapk安装器来安装。那什么是xapk文件呢?原创 2021-02-18 16:18:50 · 38836 阅读 · 1 评论 -
ARabbit:一个快速开发Android App的框架
ARabbit旨在提供一个供Android App快速开发的SDK,使开发者将更多的精力放在App的业务实现,不用再关心具体功能的实现,比如网络请求、对话框、缓存等,也不用再为内存泄漏担心。原创 2020-09-09 13:53:03 · 1973 阅读 · 0 评论 -
Android AOP简介及AspectJ的应用
AOP: Aspect Oriented Programming,即面向切面编程。作用是通过预编译方式和运行期动态代理实现程序功能的统一维护。原创 2020-06-24 08:35:30 · 1160 阅读 · 1 评论 -
App马甲包开发需要注意的地方
文章目录App端要做的设计端要做的服务端要做的由于种种原因导致原App不能使用,比如App被封杀,服务器被黑等,因此需要在短时间内上架跟原App类似的App,简称马甲包。马甲包的特点是:功能跟原App一模一样;对用户来说,只是换了一套皮肤和名称;App端要做的包名:这个肯定要换掉;icon:一般也要换成新的App的icon;app_name:肯定要换成新的;推送:因为换了包名,各个推送平台需要重新申请key和secret;如果是公司内部的推送平台也需要申请。分享:微信、QQ、微博、原创 2020-05-12 16:47:05 · 1097 阅读 · 0 评论 -
ViewBinding使用时出现Could not find method viewBinding() for arguments错误
在app的build.gradle中android内配置了:viewBinding {enabled = true}编译时报错:Could not find method viewBinding() for arguments.解决方案请检查以下几点是否配置正确:Android Studio版本需要升级到3.6以上;Android Gradle Plugin Version和Gr...原创 2020-05-05 10:10:51 · 10677 阅读 · 0 评论 -
ViewBinding使用时出现Missing required view with ID: xxx 错误
文章目录问题描述原因分析解决方案其它解决方案问题描述Android Studio版本:3.6.3我们知道,AS在3.6版本是引入了ViewBinding功能,具体功法此处不赘述。有时候在导入第三方使用了ViewBinding功能的项目时,会发现点击某些页面崩溃,并报如上错误。原因分析出现这种现象的原因一般是我们项目中使用了include布局,导致include布局中的id不能被识别。...原创 2020-05-01 10:49:51 · 9314 阅读 · 5 评论 -
12个Android中使用AspectJ实现AOP的实例操作
添加日志、权限拦截、防止双击、状态检测、埋点、异步、拦截崩溃、HOOK、缓存、Null判空、添加View控件、拦截Toast等,你能想到的,AOP都能做到。原创 2020-06-24 08:35:10 · 1594 阅读 · 0 评论 -
Android使用AspectJ进行AOP开发时遇到的一些问题总结
@Around 注解的方法,无法进入断点debug@Before、@After都可以进入断点,但是@Around却不能进入断点。解决方案:新建一个library库工程,将annotation和aspect文件都放在库工程中。原创 2020-06-24 08:35:22 · 2539 阅读 · 1 评论 -
Android常用开源库(模块部分)
文章目录网络请求图片加载数据库事件总线IOC数据解析网络请求RetrofitOkHttpVolley图片加载GlideFrescoPicasso数据库GreenDaoOrmLiteRoom事件总线EventBusRxBusIOCButterKnifeDagger2数据解析FastJsonGson...原创 2019-08-22 21:47:56 · 297 阅读 · 0 评论 -
Android常用开源库(UI部分)
AdapterBaseRecyclerViewAdapterHelper一个强大并且灵活的RecyclerViewAdapterRefreshSwipeRefreshLayoutSwipeRefreshLayout是官方提供的下拉刷新解决控件,具有使用简单,灵活等特点。SmartRefreshLayout下拉刷新、上拉加载、二级刷新、淘宝二楼、RefreshLa...原创 2019-09-06 10:58:52 · 346 阅读 · 0 评论 -
Android控件阴影效果的几种实现方法
文章目录字体阴影用9png图片实现通用阴影效果字体阴影字体阴影有四个相关参数:android:shadowRadius:阴影半径android:shadowColor:阴影颜色android:shadowDx:水平偏移android:shadowDy:垂直偏移<TextView android:id="@+id/tvshadow" andro...原创 2019-09-11 19:49:44 · 1956 阅读 · 0 评论 -
RxJava实现串行任务和并行任务
文章目录简介串行: FlatMap串行: Concat并行: Merge并行: Zipgithub地址简介串行和并行,是针对任务这个概念而来的,也就是串行任务和并行任务。那我们需要了解一下什么是任务。用一个http网络请求来看,这一个网络请求就是一个任务。它包含了发送请求、后台处理、处理返回数据这几个步骤。而需求就是多个任务的集合。有些需求是需要任务之间依次执行的,也就是下一个任务是需要...原创 2019-09-16 15:28:58 · 13704 阅读 · 1 评论 -
Android Studio中Gradle使用实例
文章目录简介配置信息使用.each引入依赖库任务信息简介Gradle是什么?Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。可以理解为Gradle是一种自动化构建工具,使用Groovy语言开发。比如我们平时开发android项目时的检测、编译、打...原创 2019-09-19 15:18:34 · 590 阅读 · 0 评论 -
App预埋功能总结
文章目录升级功能开关通用弹框旧版本和新版本字段兼容extension扩展字段权限管理域名替换升级升级是App必须预备的功能。通过升级能够给用户通知新版本信息,同时也方便用户直接在app内升级版本,这样不需要再去应用市场去更新。尤其是强制升级,在低版本不能和高版本兼容的情况下,以及后台不再支持低版本接口的时候,就必须通过强制升级来解决。功能开关所谓的功能开关,就是能够控制app的某些功能...原创 2019-09-19 18:40:19 · 1120 阅读 · 0 评论 -
Android使用postman实现模拟api接口
文章目录简介postman简介在开发过程中涉及到前端和后台的交互,那就是api接口。前端的需求是api接口定义好以后,能够有数据返回,有了数据后前端便于开发调试;而接口的数据是后台开发的任务,往往不能够短时间内完成。这样前端和后台就会有一个时间差,前端需要数据调试UI,而后台数据需要开发。这种情况下,前端开发的时候往往会造一些假数据,方便自己开发调试,等后台有了数据后再将假数据删除。这种开发...原创 2019-09-23 16:05:36 · 3790 阅读 · 2 评论 -
伪协议在Android开发中的应用
文章目录简介URL Scheme定义URL Scheme解析URL Scheme应用配置AndroidMainfest.xml配置代码解析URL Scheme应用场景app应用内页面跳转app应用内页面跳转(通过代码解析)通过app应用内的H5页面跳转到app指定页面外部app启动本app,并跳转到指定页面通过浏览器启动本app。并跳转到指定页面通过push消息跳转到指定页面Github地址简介...原创 2019-09-24 15:45:31 · 887 阅读 · 0 评论 -
Android三种模拟器介绍
文章目录AVDgenymotionMuMu模拟器AVDAVD也就是Android Virtual Device, android虚拟设备,也就是模拟器。AVD是Android开发工具自带的模拟器,AVD提供了多种不同手机型号的模拟器,从屏幕尺寸、分辨率、屏幕密度出发,尽量模拟真实手机的配置。当然我们也可以自定义这些Profile。AVD很早以前的版本对于手机CPU架构的支持业有限,通常只支...原创 2019-09-25 21:16:28 · 2700 阅读 · 1 评论 -
App使用Mars和Protocol Buffer实现长连接
文章目录简介使用.proto自动生成java文件android调用简介mars官网: https://github.com/Tencent/marsMars 是微信官方的终端基础组件, 是一个业务性无关,平台性无关 使用C++ 编写的基础组件。目前已接入微信 Android、iOS、Mac、Windows、WP、UWP 等客户端。注意:目前仅支持Android、iOS、Mac、Windows...原创 2019-09-26 10:03:18 · 1862 阅读 · 0 评论 -
Android开发过程中异常的处理方法
文章目录ErrorException抛出异常throwthrows捕获异常Android全局异常的捕获预防异常异常是指程序指令非正常执行的情况,比如空指针、数组下标越界、类型强制转换异常等,由此导致程序异常退出。Java里面的分两类:一个Error,一个Exception,它们都继承自Throwable。见图所示:ErrorError情况是程序本身不能处理的,比如JVM自身的异常,导致程序...原创 2019-09-26 22:10:59 · 795 阅读 · 0 评论 -
一种全方案解决内存泄漏的MVP架构
文章目录关于MVP设计思路常规方法优化之泛型优化之生命周期弱引用RxJava之DisposableRxJava之RxLifecycleRxJava之AutoDispose(推荐)github地址关于MVP关于MVP的介绍,我们可以参考之前的文章:Android App开发架构之:MVP我们再来重温一下MVP架构的特点:V层指的是Activity、Fragment、自定义的View,或者...原创 2019-09-29 10:04:28 · 1404 阅读 · 0 评论 -
Cannot resolve method ‘subscribe(anonymous io.reactivex.Observer<xxx>)‘的解决方案
在使用RxJava开发的时候有时会遇到类似Cannot resolve method 'subscribe(anonymous io.reactivex.Observer)'的错误提示。咋一看subscribe订阅代码并没有什么问题,但是编辑器一直提示错误。其实这是我们在create的时候使用了lambda表达式的缘故。使用lambda并没有什么问题,问题在于使用lambda表达式的时候,...原创 2019-09-29 16:45:12 · 5312 阅读 · 1 评论 -
MVVM架构:LiveData + ViewModel + Repository搭配的三种解决方案
文章目录关于MVVM解决方案方案1方案2方案3关于MVVM关于MVVM的介绍,我们可以参考之前的文章:Android App开发架构之:MVVM和MVP相比,MVVM有相似的地方,也有各自的特点。相似点:MVVM的VM层对应于MVP的P层;MVVM的M层对应于MVP的M层;两者的V层一样,对应着fragment和activity等view界面;区别:4. MVVM使用Liv...原创 2019-10-03 08:00:52 · 6893 阅读 · 8 评论 -
一种划分App业务模块的解决方案
文章目录关于Module解决方案扩展:module的mvp化github地址关于Module以mvp架构为例,在mvp中,我们一般都会根据业务功能来划分不同的模块,比如以一个直播app来说,我们会划分为注册登录、用户信息、设置、客服、直播、IM、营收等模块。每一个模块我们会建立对应的mvp文件。所以在mvp架构的app中会看到很多业务模块的package,而且每个package下面都是对...原创 2019-10-03 07:59:09 · 594 阅读 · 0 评论 -
几种常见开源协议之间的比较
网上搜集的,关于开源协议方面的介绍,汇总一下。开源协议的种类有上百种http://www.gnu.org/licenses/license-list.html不同开源协议之间的比较(老版)不同开源协议之间的比较(新版)我该如何选择各大协议在开源项目中的占有比例原创 2018-01-01 18:32:09 · 858 阅读 · 0 评论 -
Android内存泄漏原因及解决方案(附LeakCanary图解)
原因Android中内存泄露无外乎两大方面的原因:1. 非静态内部类默认持有外部类的引用比如我们经常习惯直接在一个类里面对接口(interface)或抽象类(abstract)或者覆盖类中的方法(override), 这些情况我们称之为匿名内部类,而匿名内部类默认持有外部类的一个引用。 也就是说,非静态内部类的实例(也就是对象),会自动生成一个成员变量(也就是类定义的属性),这个成员变量会自动指原创 2018-04-20 01:18:34 · 669 阅读 · 0 评论 -
Weex开发体验之一:环境搭建及调测
搭建开发环境参考文档https://weex.apache.org/cn/guide/ 快速上手所需资料可以在这里找到,这边简要总结一下,达到速查的目的。本机开发环境windows7 64bit搭建步骤下载node node包括javascript的运行环境和npm; 下载地址:https://nodejs.org/zh-cn/download/ 安装好后,检测版...原创 2018-03-30 08:18:42 · 1032 阅读 · 1 评论 -
Android组件化开发之四:组件化填坑之旅
组件化开发系列文章1. Android组件化开发之一:为什么要进行组件化开发2. Android组件化开发之二:组件化架构3. Android组件化开发之三:组件化开发手册4. Android组件化开发之四:组件化填坑之旅5. Android组件化开发之五:组件化开发实战Demo 序号 名称 坑深度 内容 ...原创 2018-03-06 14:49:50 · 3201 阅读 · 1 评论 -
APP打包的几种方法
第一代打包方法 直接点击运行按钮,系统在app\build\outputs\apk下生成了apk文件,然后直接拿这个apk文件就对外发版了。 原因是buildTypes里面的release和debug都用得同一个release版本的key。优点 简单、粗暴、快速、高效缺点 编译出来的都是debug版本的,代码里面如果需要根据debug和release版本进行区分则做不到debu...原创 2018-03-18 08:00:19 · 1527 阅读 · 0 评论 -
一种利用百分比布局适配所有Android手机屏幕分辨率的方法
场景1、团队里面,UI设计师往往只提供以一个标准分辨率来设计的UI设计稿,用于Android、iOS、H5三端。2、Android手机分辨率众多,如何让UI在不同分辨率的手机上面能有相同的效果?解决方案在网上看到有一种解决方案是按照屏幕分辨率根据基准分辨率来等比缩放,经过实际项目中使用后,效果不错,因此来跟大家分享一下这个方案,以及使用过程中需要注意的问题。1、这是UI设计师以iPhone6的分辨...原创 2017-12-31 12:15:26 · 3656 阅读 · 0 评论 -
Android全局对话框的三种实现
开发中我们有时候有这样的需求,就是收到消息推送后能够在任何的当前界面上弹出消息框。因为消息推送有个特殊性,即不知道正在哪个页面浏览的时候会收到消息。我们现有的解决方案:需要在所有的页面上加上消息事件的处理,比如我们会在BaseActivity中统一处理这个消息,然后让所有的页面集成这个Activity。但是这个方案有个弊端就是,如果打开A页面后,再打开B页面,这时A页面未主动...原创 2018-01-23 18:31:07 · 1805 阅读 · 3 评论 -
安装APK的两种方式
网络安装一般通过网线连接到设备,通过网线进行apk的传输和安装。步骤如下:1、adb connect 目标设备ip和端口;2、adb install 本地apk路径。如果已经安装过,那么可以通过adb install -r 本地apk路径 命令覆盖安装;USB安装通过usb线连上设备,如果设备需要安装驱动的,先安装驱动。步骤如下:如果只连接了一台设备:1、adb...原创 2018-01-25 16:39:00 · 4413 阅读 · 0 评论 -
Android组件化开发之三:组件化开发手册
组件化开发系列文章1. Android组件化开发之一:为什么要进行组件化开发2. Android组件化开发之二:组件化架构3. Android组件化开发之三:组件化开发手册4. Android组件化开发之四:组件化填坑之旅5. Android组件化开发之五:组件化开发实战Demo开发模式为project新建一个项目专门用来对此业务模块的组件化进行开发,项目内可分为applic...原创 2018-01-16 15:43:04 · 1181 阅读 · 0 评论 -
Android组件化开发之二:组件化架构
组件化开发系列文章1. Android组件化开发之一:为什么要进行组件化开发2. Android组件化开发之二:组件化架构3. Android组件化开发之三:组件化开发手册4. Android组件化开发之四:组件化填坑之旅5. Android组件化开发之五:组件化开发实战Demo从头对一个现有的APP项目进行组件化改造,需要按计划按步骤逐步实现。这里我们分为四期计划进行改造,...原创 2018-01-16 15:32:19 · 1956 阅读 · 0 评论 -
Android组件化开发之一:为什么要进行组件化开发
组件化开发系列文章1. Android组件化开发之一:为什么要进行组件化开发2. Android组件化开发之二:组件化架构3. Android组件化开发之三:组件化开发手册4. Android组件化开发之四:组件化填坑之旅5. Android组件化开发之五:组件化开发实战Demo现状随着APP业务的不断增加,版本不断迭代,APP越来越臃肿,随之而来的问题也逐步呈现出来;...原创 2018-01-16 15:11:38 · 3398 阅读 · 0 评论 -
关于so文件的兼容性
so简介:目前Android共支持七种不同类型的CPU架构,分别是:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起)。如果你要完美兼容所有类型的手机,理论上是要在的libs目录下放置各个架构平台的SO文件。参考一篇介绍so比较全面的文章:http://blog.codercl原创 2018-01-04 09:10:26 · 776 阅读 · 0 评论