![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
南山伐木
伐木丁丁,鸟鸣嘤嘤。出自幽谷,迁于乔木。嘤其鸣矣,求其友声。
展开
-
Android单元测试
在Android开发过程中,一般模式大抵为编写好程序,然后运行在Android虚拟机或真机上(考虑到电脑配置太低,虚拟机太慢等情况,用虚拟机运行程序很少见);若要调试程序,一般采用打Log日志、打断点Debug等方式,定位到某处可能存在bug,再修改代码,反复运行。而每加载一次app都需要编译整个项目,速度很慢;有时可能仅仅是修改了某个页面的很小的判断就需要重新编译一次,在真机上一路点击到刚修改的页原创 2017-02-28 22:08:02 · 295 阅读 · 0 评论 -
ClassPlaceholder插件:动态修改jar包class文件
背景:在开发,一些在jar包或底层库封装的一些常量参数有时需要根据环境的切换而改变,如在jar中的使用的baseUrl,一般都是通过向外暴露一个set()方法,由外部注入。但若在底层库在多个模块引用,又不能避免其他模块对参数的修改时,特别是在大项目若一些管理混乱的项目中,就会出现多个地方set不同的值,不能保证参数set()入口的唯一性。这时便可以考虑不向外暴露set()方法。并将原参数定义为...原创 2018-09-06 23:42:10 · 868 阅读 · 0 评论 -
自定义一个gradle插件动态修改jar包Class文件
动态修改jar包中的class文件,预埋占位符字符串,在编译代码时动态植入要修改的值。记录一下整个过程及踩过的坑。Github 地址:ClassPlaceholder创建一个Android项目,再创建一个Android library,删掉里面所有代码。添加groovy支持。如:apply plugin: 'groovy'sourceCompatibility = 1.8...原创 2018-09-06 23:36:23 · 2406 阅读 · 0 评论 -
Android开发中Kotlin之于Java那些不一样的功能
感觉Kotlin对java不仅是一点点的改变,而是一种完全不同的体检。习惯kotlin的简洁后,就知道java到底e有多啰嗦了。今天简单对比一下在Android开发中kotlin在语言本身上就有哪些好用的功能。可观察属性Delegates.observable。在Oc中早已有的功能,非常方便在状态值切换时使用,再也不怕状态值改变时没有调用到关联的函数。语法:var max: Int by...原创 2018-09-05 21:24:47 · 353 阅读 · 0 评论 -
Android学习笔记(七)
AIDL进程间通信;AIDL(Android Interface Design Language)▲№aidl接口语法: 1、支持package 和 import等关键字 支持void interface等关键字 2、不支持访问修饰符 3、接口中不能定义常量只能定义方法 4、参数类型或返回类型: a、基本类型 b、CharSequenc原创 2017-02-23 22:26:12 · 220 阅读 · 0 评论 -
Android学习笔记(六)
短信技术: 短信数据库存在于/data/data/com.android.providers.telephoney目录下; 相关的表: sms:_id(信息id) thread_id(会话id) address(地址) body(内容) date(日期) type(1为收件箱信息,2为发件箱信息,3为草稿箱) ★常用相关的uri(没有API,须手动输入以下uri) content:原创 2017-02-23 22:15:18 · 220 阅读 · 0 评论 -
Android学习笔记(五)
◆桌面小部件(AppWidget) ▲创建步骤: §1.创建桌面小部件的布局,xml文件; §2.创建元数据来描述桌面小部件的具体特性;官方单元格大小:手机:70*n-30;平板:87*n-30;创建一个xml文件夹,xml类型为AppWidget Provider; <appwidget-provider xmlns:android="http://schemas.android.com原创 2017-02-21 23:15:26 · 196 阅读 · 0 评论 -
Android学习笔记(四)
Touch事件的处理 两种方式: →1、为view对象设置OnTouchListener监听器 →2、重写控件Activity的onTouchEvent方法 ★注意: OnTouchListener监听器的onTouch方法在控件处理touch事件时优先于控件本身的onTouchEvent方法。越向下越具体到组件的touch事件处理的优先级越高; ●OnTouchListen原创 2017-02-21 23:02:33 · 228 阅读 · 0 评论 -
Android学习笔记(三)
★Android数据存储:IO、偏好设置、数据库(SQLite)、ContentProvider、网络存储◆Android数据库(SQLite) ▲创建数据库: ○boolean exits = getDatabasePath(“stu.db”).exists();//判断要创建的数据库是否存在。 ○SQLiteDatabase db = context.openOrCreateDat原创 2017-02-21 22:36:16 · 277 阅读 · 0 评论 -
Android学习笔记(二)
Android通信原理。 是通过一个轮回机制Looper来管理线程之间的通信。Looper是一个死循环体,内部包含一个消息队列(MessageQueue),looper的作用就是负责不断循环地从这个消息队列取出消息然后执行处理。在Android启动的主线程中默认存在一个Looper。 ★具体步骤为: ●由一个Handler向关联的Looper发送消息(Message)。当Looper处理消息时原创 2017-02-20 17:52:40 · 195 阅读 · 0 评论 -
Android学习笔记(一)
★布局。相对布局:*停靠父控件边界(boolean) layout_alignParentTop(停靠父控件上边界); layout_alignParentRight ;layout_alignParentBottom;layout_alignParentLeft*) 相对父控件居中(boolean) layout_centerHorizontal;layout_centerVertical ; l原创 2017-02-20 17:47:36 · 192 阅读 · 0 评论 -
Android studio gradle中分渠道加载res、libraries及Class
前段时间遇到这样的需求,在App里使用了地图功能,对应海外版使用Android内置google的地图服务。而对于国内版(大家都知道的),我们使用了高德地图。而在导入高德地图的时候需要加入对应的sdk及.so文件,这样最后打包的大小会增加2M左右。但海外版并不需要这部分资源,故需要根据不同的渠道加载不同的jar、res、及不同的类,有助于保持代码的干净,控制包的大小。不多说了,直接上步骤!1)首先要获原创 2017-02-28 22:20:54 · 1117 阅读 · 0 评论 -
Android library发布多渠道AAR
一、 在项目多渠道开发时,除了对不同的渠道除了做统计外,还可以对不同的渠道加载不同的代码及资源,具体的部署可以参考 Android studio gradle中分渠道加载res、libraries及Class ;在模块化拆分后,若恰好在模块内部的代码及资源也要根据不同的渠道发布不同的aar包到nexus仓库,该怎么配置呢?二、思路:一般单独拆分出的library基本都是将代码及资源打包成aar包...原创 2018-12-02 18:09:39 · 930 阅读 · 0 评论