1.安卓开发需要学什么
2.注解处理器(APT)了解一下
3.Android开发八大模块学习笔记,带你初探Android系统开发全貌
4.butterknife源码详解
安卓开发需要学什么
安卓开发需要学:一、应用程序
Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的open falcon源码分析MIDlet,一个 Activity 类负责创建视窗,一个活动中的Activity就是在 foreground(前景)模式,背景运行的程序叫做Service。
二、中介软件
操作系统与应用程序的沟通桥梁,并用分为两层:函数层(Library)和虚拟机(Virtual Machine)。 Bionic是 Android 改良libc的版本。
Android 同时包含了Webkit,所谓的Webkit 就是Apple Safari浏览器背后的引擎。Surface flinger 是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的Bionic Libc。
三、画室app源码硬件抽像层
Android 的 HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL
的目的是为了把 Android framework 与 Linux kernel 隔开。
让 Android 不至过度依赖 Linux
kernel,以达成 kernel independent 的概念,也让 Android framework
的开发能在不考量驱动程序实现的前提下进行发展。
四、编程语言
Android 是运行于 Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能,Android 大都没有支持。
包括Cairo、X、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、矿山管理源码以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。
五、安全控制
目前Android 的 Linux kernel控制包括安全(Security),存储器管理(Memory Managemeat),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型等。
下载Android源码之前,先要安装其构建工具Repo来初始化源码。Repo 是 Android 用来辅助Git工作的一个工具。
百度百科—android开发
注解处理器(APT)了解一下
APT全称为Annotation Processing Tool,即注解处理器,是一种命令行程序,用于处理源代码中添加的注解对象,并通过注解处理器对其进行处理。通常,PIO源码详解APT用于生成源码,然后将其加入编译目录以简化开发周期。
在实际开发中,自定义注解的使用相对较少。注解是Java1.5中引入的概念,用于标记代码的元数据。定义一个注解使用@interface关键字,如定义名为Test的注解。
元注解是注解的注解,用于标记注解的元数据,允许控制注解的属性和行为。Java中存在四种元注解:Retention、Inherited、Documented和Target。
Retention表示注解的保留范围,取值为枚举类:RetentionPolicy,包括三个类型。源码 王巍
Target用于控制注解的使用范围,取值为枚举类:ElementType。
Documented用于描述注解是否需要加入到如javadoc工具生成的公共API文档中,带有Documented注解的注解将保留在生成的文档中。
Inherited元注解用于标记注解,当子类继承使用该注解的类时,子类将继承该注解。例如,定义注解Test并使用@Inherited元注解标记,然后定义Father类使用@Test注解,再定义Son类继承Father类,Son类将拥有注解Test。
APT的基本原理是在需要使用的元素上添加自定义注解,然后在编译时收集使用了该注解的元素并进行统一处理,如根据元素生成对应的工具类,以提高开发效率。
创建一个注解处理器涉及以下步骤:定义注解、创建注解处理器类、实现核心方法。
以ButterKnife框架为例,它通过APT技术实现,功能是通过注解为对象赋值。创建控件后,需要使用控件ID获取控件对象,多个重复代码,此框架通过注解直接初始化控件。
创建注解处理器的步骤包括定义注解、创建处理器类、实现关键方法。在处理器类中,通过getSupportedAnnotationTypes()方法返回注解类型,process方法用于解析注解元素并生成Java代码。
使用注解处理器时,通过创建配置文件声明处理器全限定名称,配置完成后,按照ButterKnife的使用方式即可使用APT生成的代码。
APT技术提供了高效的注解处理机制,简化了开发流程。通过学习APT,开发者可以更高效地处理注解,提高代码的可维护性和可读性。了解更多APT技术内容,请关注公众号:zhangke_blog。
Android开发八大模块学习笔记,带你初探Android系统开发全貌
Android操作系统,自Andy Rubin开发以来,逐渐由Google收购并拓展至包括智能手机、平板电脑在内的多个领域,以其免费、智能和开放性在全球市场份额中占据重要地位。 Android系统庞大,学习内容繁杂,本文将通过八大模块深入讲解,旨在带领初学者全面了解Android系统架构及其运作机制,构建坚实的技术基础。架构师筑基必备技能
深入理解Java泛型
注解使用详解
并发编程实践
数据传输与序列化技术
Java虚拟机原理探索
高效IO操作
Android百大框架源码解析
Retrofit 2.0源码剖析
Okpiler : butterknife-compiler
作用于变量的BindView注解,通过指定的资源id调用findViewById()方法,并将找到的控件赋值给相应变量。同时,onClick注解通过指定id设置onClickListener,并触发相关方法。
使用Butterfield.bind(this);方法是关键,它通过自定义处理器解析注解并生成对应代码。
但butterknife功能强大,本文仅聚焦于BindView和onClick注解。BindView注解通过IdRes注解限定资源id,而onClick注解结合ListenerClass注解,实现事件监听。
运行时注解ListenerClass实现解析,通过自定义处理器解析编译时注解。重点在于ButterknifeProcessor.process()方法,其中findAndParseTargets()查找并解析所有注解,bindingClass.brewJava()生成代码。
findAndParseTargets()解析BindView等注解,生成BindingClass实例存储初始化信息。bindingClass.brewJava()生成对应ViewBinder类,实现view初始化。
生成的ViewBinder实例通过Butterfield.bind(this);方法调用,该方法通过反射实例化ViewBinder并调用其bind()方法。
ViewBinder类内部封装了findViewById()、setOnClickListener()等方法,将注解信息对应到具体操作,简化控件初始化和事件处理。
总结,butterknife通过编译时注解解析和运行时动态生成ViewBinder类,实现高效、便捷的控件绑定和事件监听。这种机制虽然引入了反射,但在内存缓存优化下,整体性能优势显著。
关键点在于合理使用注解,避免将变量声明为private,以确保butterknife能够正确绑定和初始化控件。