android (安卓)是完全开源的吗
发布时间:2025-05-13 04:21:08 发布人:远客网络
一、android (安卓)是完全开源的吗
Android是一种基于Linux的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由Google(谷歌)公司和开放手机联盟领导及开发。
尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。
2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。
2003年10月,Andy Rubin等人创建Android公司,并组建Android团队。
2005年8月17日,Google低调收购了成立仅22个月的高科技企业Android及其团队。安迪鲁宾成为Google公司工程部副总裁,继续负责Android项目。
2007年11月5日,谷歌公司正式向外界展示了这款名为Android的操作系统,并且在这天谷歌宣布建立一个全球性的联盟组织,该组织由34家手机制造商、软件开发商、电信运营商以及芯片制造商共同组成。
并与84家硬件制造商、软件开发商及电信营运商组成开放手持设备联盟(Open Handset Alliance)来共同研发改良Android系统,这一联盟将支持谷歌发布的手机操作系统以及应用软件,Google以Apache免费开源许可证的授权方式,发布了Android的源代码。
2008年,在GoogleI/O大会上,谷歌提出了AndroidHAL架构图,在同年8月18号,Android获得了美国联邦通信委员会(FCC)的批准,在2008年9月,谷歌正式发布了Android 1.0系统,这也是Android系统最早的版本。
Android是运行于Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux里支持的功能,Android大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。
Android又以Bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。Android为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程序移到 Userspace,使得Linux driver与 Linux kernel彻底分开。
Bionic/Libc/Kernel/并非标准的Kernel header files。Android的 Kernel header是利用工具由 Linux Kernel header所产生的,这样做是为了保留常数、数据结构与宏。
Android的 Linux kernel控制包括安全(Security),存储器管理(Memory Management),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。下载Android源码之前,先要安装其构建工具 Repo来初始化源码。Repo是 Android用来辅助Git工作的一个工具。
参考资料来源:百度百科-android
二、有哪些 Android 的开源界面库
比较火爆的Android开源库有以下:
(2)网络请求的排序(scheduling)
(6)和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)2、android-async-http
(7)可将Cookies持久化到SharedPreferences 3、Afinal框架
,使用了线程池对sqlite进行操作。
(2)注解模块:android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定。无需findViewById和setClickListener等。
(3)网络模块:通过httpclient进行封装http数据请求,支持ajax方式加载,支持下载、上传文件功能。
(4)图片缓存模块:通过FinalBitmap,imageview加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。4、xUtils框架
,一行代码就可以进行增删改查;
(2)注解模块:android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定;
(3)网络模块:支持同步,异步方式的请求;
(4)图片缓存模块:加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象;5、ThinkAndroid主要有以下模块:(1) MVC模块:实现视图与模型的分离。
(2) ioc模块:android中的ioc模块,完全注解方式就可以进行UI绑定、res中的资源的读取、以及对象的初始化。
,使用了线程池对sqlite进行操作。
(4) http模块:通过httpclient进行封装http数据请求,支持异步及同步方式加载。
(5)缓存模块:通过简单的配置及设计可以很好的实现缓存,对缓存可以随意的配置
(6)图片缓存模块:imageview加载图片的时候无需考虑图片加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。
(7)配置器模块:可以对简易的实现配对配置的操作,目前配置文件可以支持Preference、Properties对配置进行存取。
(8)日志打印模块:可以较快的轻易的是实现日志打印,支持日志打印的扩展,目前支持对sdcard写入本地打印、以及控制台打印
、对下载进行控制、如开始、暂停、删除等等。
(10)网络状态检测模块:当网络状态改变时,对其进行检6、LoonAndroid主要有以下模块:
(1)自动注入框架(只需要继承框架内的application既可)
(2)图片加载框架(多重缓存,自动回收,最大限度保证内存的安全性)
(3)网络请求模块(继承了基本上现在所有的
(4) eventbus(集成一个开源的框架)
(6) json解析(支持解析成集合或者对象)
(7)数据库(不知道是哪位写的忘记了)
(8)多线程断点下载(自动判断是否支持多线程,判断是否是重定向)
三、用过哪些好用的Android开源项目呢
目前最顺手的是OkHttp,其中的Okio模块现在也抽象成单独的开源库了,对Java io/nio做了很好的封装,性能非常高。
另外我个人不推荐Volley这个网络库,它的请求队列和request/response封装确实还不错,但是NetworkImageView等图片加载部分是有不少bug的,包括最头痛的卡顿(是出在二三级缓存策略或者imageLoader里具体记不得了)。而且Volley的接口设计也让我用得很头痛。
个人推荐Picasso,不太推荐Google官方推荐的Glide。
二者接口非常相似,都用得很舒服,但是Glide对图片的缓存策略跟Picasso不同,从使用场景来看Picasso应该更合逻辑一些。
另外Fresco这个库本身对包size增加太多了。如果不是有各种gif动画播放或者海量高清图片展示的话,感觉用不到。
目前看过效率最高的是GreenDao,不比直接使用sql语句执行慢,而且接口设计也很干净。研究过GreenDao的源码,深感我自己写也写不出更快的实现了。