Android入门

Android起源

先声明一点,Android系统开始的时候并不是谷歌自己研发的,Android系统是由安迪 鲁宾等人的开发团队研发出来的,最初就是做了一些先进的数码相机,但是估计开发人员发现挣钱太少了,看到智能手机发展的挺好,我猜那时候应该是诺基亚的塞班系统挺火的时候吧,一个手机3千多,当时我在高中,感觉挺贵,挺高大上的。然后安迪 鲁宾这帮人就把Android改成了智能手机操作系统,2005年8月的时候被谷歌公司看上了,就给收购了,从此Android就变成了谷歌公司的了。

图标的确定

大概是因为美国人比较注重种族关系,不希望有种族歧视,比如LOL都知道把,开始的时候LOL里面的女英雄角色,都是细腰细腿,瓜子脸,特别好看,后来就被妇联告了,说他们歧视丑女,LOL开发者心中一万字飘过,开发个游戏,都能惹到别人,打游戏的也郁闷,打游戏不就是为了开心吗,谁不想看这漂亮妹子打游戏呀。谷歌的人这方面意识就很强,搞了个机器人图标,谁也不惹,中立。纯属个人猜想,有觉得不对的,可以吐槽。

历史版本

简单了解一下以前的版本名称:
1.0 Adtro(阿童木)内测版-------------------让我想到的一部动画片
1.1 Bender(发条机器人)内测版----------让我想到了Dota里面的一个英雄
1.5 Cupcake(纸杯蛋糕)
1.6 Donut(甜甜圈)
2.1 Eclair(闪电泡芙)
2.2 Froyo(冻酸奶)
2.3 Gingerbread(姜饼)
3.0 Honeycomb(蜂巢)
4.0 Ice cream SandWich(冰欺凌三明治)
4.1 Jelly Bean(果冻豆)
4.2 Jelly Bean(果冻豆)
4.3 Jelly Bean(果冻豆)
4.4 Kitkat(雀巢巧克力)
5.0 Lollipop(棒棒糖)
6.0 Marshmallow(棉花糖)
7.0 Nougat(牛轧糖)
8.0 Oreo(奥利奥)
9.0 Pie(果馅饼)
10 Android10
这名字都是吃的,感觉比较奇葩,现在5.0以前的基本都快没了,现在很多都是8,9,10了

Android体系结构*****重点

我觉得这个是重点,因为作为Android开发者一定要知道自己做的是什么,开发用的技术都是什么,手机到底怎么实现的。先贴一张Android开发者网站的图:
Android体系结构图
从下面往上简单介绍一下吧。

Linux 内核

大红色区域,就是最底层,基于Linux系统的各种驱动,硬件这种,音视频的,蓝牙,Binder(IPC),键盘,相机,USB,Wifi等。这些都是开发手机的人必须精通的。

硬件抽象层

往上一层,浅蓝色区域,叫做硬件抽象层,Android开发者网站是这样解释的,提供标准界面,向更高级别的Java Api 框架显示设备硬件功能。大概就是提供接口给java,因为java不能调起硬件,有了这些接口,java就能间接调起硬件了,比如播放音乐,拍照,打开蓝牙等吧。

Android Runtime

在往上黄色区域,叫Android Runtime,Android开发者网站是这样解释的,对于运行 Android 5.0(API 级别 21)或更高版本的设备,每个应用都在其自己的进程中运行,并且有其自己的 Android Runtime (ART) 实例。
ART 的部分主要功能包括:

  • 预先 (AOT) 和即时 (JIT) 编译
  • 优化的垃圾回收 (GC)
  • 在 Android 9(API 级别 28)及更高版本的系统中,支持将应用软件包中的 Dalvik Executable 格式 (DEX) 文件转换为更紧凑的机器代码。
  • 更好的调试支持,包括专用采样分析器、详细的诊断异常和崩溃报告,并且能够设置观察点以监控特定字段
    这个区域有个DVM但是图上没画。为啥有个dvm呢,因为用jvm是sun公司开发,因为使用了jvm,所以sun公司就把谷歌给告了,谷歌就研发了dvm,避开了这个诉讼。后来oracle公司收购了sun公司,oracle公司又把谷歌告了,这次赔了好多钱,后来谷歌就有出了kotlin语言,定位Android开发的官方语言为kotlin语言,但是因为之前都是java语言,所有kotlin完全兼容java。后面肯定要慢慢都换成kotlin语言,所以没学KT的,要抓紧学一学KT了。
    谷歌在开发dvm的时候,肯定想的是一定要比jvm要好,不然弄个比jvm还差的,多没面子呀。jvm运行的时候,是去找.class字节码文件,一个类就有一个字节码文件,这样是不是找起来特别耗时。谷歌开发的dvm运行的.dex文件,.dex文件是把.class所有的字节码文件统一打包变成一个.dex文件,运行的时候就比jvm好很多了。

原生C/C++库

网站是这样解释的,许多核心 Android 系统组件和服务(例如 ART 和 HAL)构建自原生代码,需要以 C 和 C++ 编写的原生库。因为只有C能操作硬件,而且执行效率高,好多音视频的软件都需要使用C写代码,来实现一些华丽的效果,比如抖音,美图,这些需要美颜效果的都是需要写C代码的,所以想要做成为高级android开发工程师,C是一定要学的。

Java API Framework

在往上的绿色就是java代码了,这些就是Android的四大组件,Location(定位),Package(包管理),Notification(通知),Telephony(电话),Window(窗口)等等,这些都是好多类,供Android开发人员调用,来实现一些功能,一般情况都是直接使用,但是有些情况是需要修改Framework源码的,要利用hook来做,比如主题切换,还有屏幕适配等。同样是需要开发人员去读源码,看看源码到底怎么写的,这样才能理解Android的执行流程,比如Activity的声明周期,自定义View为啥是先测量,后排版,然后在绘制等等这些原理。

System App

最顶层,见名知意,就是系统级别的应用,比如相机,短信,日历,浏览器,电话,时钟,这些都是必备的,都是删不掉了,还有一些也是删不掉的,比如天气,手机管家,应用商店…这些都是做手机的厂商内置的,一样删不掉。早先的时候好多人喜欢把手机root了,这样不想要的软件就能删掉了,感觉自己很厉害,其实这样只能把你的手机弄得更加不安全。谷歌也是知道这一点,现在的手机越来越难root了,也越来越安全了,但是并不是100%安全,给大家提个醒,安全任何软件,只要提示需要某某权限,你一定要看清楚再点,否则很可能被盗取个人信息。使用软件最好是在应用市场下载,不要安装某些人发给你的软件,切记。
链接: https://developer.android.google.cn/guide/platform

ADB常见指令

adb工具在sdk的platform-tools里面有个adb.exe
在使用adb之前,要做一个配置一个环境变量,如果不配置,就要在adb.exe这个文件夹里面打开cmd命令窗口。
adb push aa.txt /mnt/sdcard —aa.txt一定要在CMD所在目录,这个指令就是把aa.txt存到手机里面
adb pull /mnt/sdcard/aa.txt ----就是把aa.txt拉出来
adb kill-server ----杀死连接服务,当你的adb连接不稳定的时候就杀死
adb start-server -----杀死adb服务之后,手动开启adb服务
adb install aa.apk ----在手机上安装aa.apk这个软件
adb uninstall com.example.helloword -----卸载某个软件,通过报名卸载
adb shell ------快速进入手机终端,进入手机终端就要输入Linux指令
ls -----------列出当前所有的目录
cd data/data -------就是进入data/data目录
快捷键ctrl+c,就是退出手机终端

以上最重要的就是Android体系结构,最好是背下来,无论是为了学习,还是为了面试,都是非常有用的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值