摘要:一、背景 项目开发中,有时候我们需要获取到Gradle源头Task,以做进一步的逻辑处理。如项目中存在多个组合变体的情况下,需要针对其中特定变体引入不同的plugin。这可能是基于如下考虑: 1,如若所有变体都引入并集后的plugin,在逻辑上对某些变体确实是没必要的; 2,如若plugin中如果有 阅读全文
posted @ 2020-05-31 20:56 HappyCorn 阅读(58) 评论(0) 推荐(0) 编辑
摘要:一、背景 项目中用到了多个第三方的SDK,其中有些外部服务是需要在AndroidManifest中配置的,并且通过形如android:process=":remote"配置单独的进程。如百度定位,对应service配置如下: <service android:name="com.baidu.loca 阅读全文
posted @ 2020-05-31 20:55 HappyCorn 阅读(91) 评论(0) 推荐(0) 编辑
摘要:一、背景 一般意义上而言,Java/Android中的引用类型包括强引用、软引用、弱引用、虚引用。不同的引用类型具有各自适用的应用场景,并与JVM的GC直接相关。 作为Java/Android中的引用类型之一,WeakReference被大量的使用到系统源码、基础工具甚至具体的业务逻辑中。在解决需要 阅读全文
posted @ 2020-05-31 20:53 HappyCorn 阅读(99) 评论(0) 推荐(0) 编辑
摘要:一、背景 项目中,客户端与服务端之间普遍使用Https协议通信,突然接到测试同事反馈Android5.0以下手机上,App测试服使用出现问题,出现SSL handshake aborted错误信息,但正式服正常。经查,普遍错误信息详情如下: SSL handshake aborted: ssl=0x 阅读全文
posted @ 2019-12-18 20:29 HappyCorn 阅读(1106) 评论(0) 推荐(0) 编辑
摘要:一、背景 为了安全起见,开发者本地开发和Jenkins上正式构建时,App采取的签名文件是不一样的。本地开发采取通用的如debug.keystore,正式签名文件部署在服务端。现在不少机型,如Oppo,在本地构建安装时往往首先需要输入安全密码,之后还会自动与Oppo应用市场官方渠道上相应App的签名 阅读全文
posted @ 2019-12-05 20:47 HappyCorn 阅读(725) 评论(0) 推荐(0) 编辑
摘要:一、背景 无论是Java还是Android项目,往往都会用到多线程。不管是主线程还是子线程,在运行过程中,都有可能出现未捕获异常。未捕获异常中含有详细的异常信息堆栈,可以很方便的去帮助我们排查问题。 默认情况下,异常信息堆栈都会在输出设备显示,同时,Java & Android为我们提供了未捕获异常 阅读全文
posted @ 2019-12-05 20:47 HappyCorn 阅读(475) 评论(0) 推荐(0) 编辑
摘要:一、背景 从系统架构上来说,Android是基于Linux系统基础上,做了进一步的定制与修改,并融入了自身的特有功能,且向应用层提供应用程序接口,供开发者使用。系统内核层面,主体依然是Linux内核。因此,以往的Linux系统上的开发、使用和经验,在Android系统上很大程度上还是适用的。 And 阅读全文
posted @ 2019-12-05 20:46 HappyCorn 阅读(915) 评论(0) 推荐(0) 编辑
摘要:一、背景 项目开发中,AS(Android Studio)经常会用到通过关键字在项目空间下搜索对应结果。最经常用到的Find in Path。例如打开Find in Path后,可以选中Scope tab,选择All Places范围去搜索对应的关键字,下方会自动显示对应的搜索结果。 Find in 阅读全文
posted @ 2019-12-05 20:45 HappyCorn 阅读(974) 评论(0) 推荐(0) 编辑
摘要:一、背景 进行Android项目开发时,跟网络代理基本上天天都在打交道。通常情况下,至少有三个场景中经常用到网络代理: 1,经常通过Chrome访问Google等国外的技术网站,如通过SS工具等; 2,AS(Android Studio)中需要下载国外的aar或jar包等资源; 3,手机抓包时,电脑 阅读全文
posted @ 2019-12-05 20:44 HappyCorn 阅读(1999) 评论(0) 推荐(0) 编辑
摘要:一、背景 最近改项目中的bug,遇到一类问题:当月起始日可以设置的情况下(1日到28日),需要计算出对应的月、季度、年等相关的时间范围,以及对应的如上月、上季、去年等,和给定时间戳的所属年、季度、月份等各种时间求取。 为简单起见,举个栗子: 如如果月起始日设置成了5,那么本月的时间范围是: 2019 阅读全文
posted @ 2019-12-05 20:43 HappyCorn 阅读(97) 评论(0) 推荐(0) 编辑
摘要:一、背景 工作中有时候往往会遇到下述场景:例如需要将新打好的安装包等文件临时性的给到同事,可能还需要给到多个同事。这时,我们往往有如下几种方案: 1,一般都会有公司内部的文件系统,上传文件后将对应的地址给到同事,但往往涉及到权限等诸多限制,且自己这边每次都要上传。 2,上传到外网,然后将对应的链接给 阅读全文
posted @ 2019-12-05 20:42 HappyCorn 阅读(211) 评论(0) 推荐(0) 编辑
摘要:一、背景 Android系统版本在不断更新,从最初的Android 1.0到现在Google和各大手机厂商正在推的Android 10,平均下来每个年头都有一个大的版本更新。但用户正在用的手机上的Android系统版本往往更新上来有个过程,如当前时点不少App最低支持的Android系统版本还是4. 阅读全文
posted @ 2019-12-05 20:41 HappyCorn 阅读(2382) 评论(0) 推荐(0) 编辑
摘要:一、背景 Gralde版本与AGP(Android Gradle Plugin)版本具有一定的对应关系,原因在于AGP实质上作为Gradle的插件,依赖于Gradle作为宿主。因此,不同的AGP版本需要与相应的Gralde版本相匹配。他们之间版本的对应关系如下: 具体可以参照官方文档: develo 阅读全文
posted @ 2019-12-05 20:40 HappyCorn 阅读(1400) 评论(0) 推荐(0) 编辑
摘要:一、背景 项目需求的频繁迭代,新的产品功能在不断添加和延伸,随之带来的是,项目技术复杂度的提升。 近几年来,Android模块化、组件化相关技术得到极速发展,将项目整体进行分层,不同的层次之间依据实际的技术功能或业务支撑或业务模块去划分具体的组件或模块,是组件化或模块化一致的行动方向。 复杂的产品功 阅读全文
posted @ 2019-12-05 20:39 HappyCorn 阅读(397) 评论(0) 推荐(0) 编辑
摘要:一、背景 大家都知道,Android Studio开发工具自带了Analyze Apk,可以很方便的分析Apk文件。具体位于菜单build >> Analyze APK...路径下,点击后可以选择目标路径下的Apk文件,甚至可以直接将目标APK文件直接拖拽到Android Studio中,不到几秒中 阅读全文
posted @ 2019-12-05 20:38 HappyCorn 阅读(229) 评论(0) 推荐(0) 编辑