什么是Android
Android是基于Linux内核开发、主要以Java为开发语言的一个开源的操作系统,主要用于移动设备,如智能手机和平板电脑、可穿戴设备等,当然还有更多的领域使用到了Android系统,例如电视、机顶盒等
为什么选用Linux内核
Android的历史
Android的架构
1.Linux内核层
android系统是基于Linux内核的,这一层为android设备的各种硬件提供了底层的驱动,如:显示驱动,音频驱动,照相机驱动等。
2.系统运行库层
这一层通过一些 C/C ++库来为 Android 系统提供了主要的特性支持。如 SQLite 库提供了数据库的支持。 openGL/ES库提供3D绘图的支持
同样在这一层还有 Android 运行时库,它主要提供了一些核心库,能够允许开发者使用 Java语言来编写 Android 应用。另外。 Android 运行时库中还包含了 Dalvik 虚拟机( 5.0系统之后改 ART运行环境),它使得每一个 Android 应用都能运行在独立的进程当中。并且拥有一个自己的Dalvik 虚拟机实例。相较于 Java 虚拟机。 Dalvik是专门为移动设备定制的,它针对手机内存。 CPU 性能有限等情况做了优化处理。
3.引用框架层
这层主要提供了构建应用程序时可能用到的各种 API . Android 自带的一些核心应用就是用这些 API 完成的,开发者也可以通过使用这些API构建自己的应用程序。
4.应用层
所有安装在手机上的应用程序都是属于这一层的。比如系统自带的联系人、短信等程序。当然包括我们开发的程序
Android 版本
https://zhuanlan.zhihu.com/p/52850126
Android系统提供了哪些东西给developer?
四大组件
- Activity 活动
Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务。 Activity中所有操作都与用户密切相关,是一个负责与用户交互的组件,可以通过setContentView(View)来显示指定控件。 在一个android应用中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信。
- Service
服务是一种可在后台执行长时间运行操作而不提供界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。此外,组件可通过绑定到服务与之进行交互,甚至是执行进程间通信 (IPC)。例如,服务可在后台处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序进行交互。
- Broadcast Receiver广播接收器
广播是一个全局的监听器,广播分为两个角色:广播发送者、广播接收者android广播机制就是在Android中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理。
- 内容提供器
用于在不同的程序之间共享数据,即将一些数据共享给他应用,这些数据是一些可以进行二次开发的基础数据,例如:电话簿、短信、多媒体等的数据,他们都实现了跨程序数据共享的功能
丰富的系统组件
Android为开发者提供了丰富的系统组件,可以帮助开发者设计出漂亮的界面,当然,随着也可以定制属于自己的控件。
SQLite 数据库
Andrid 自带的数据库,支持SQL语法,也有封装好的API,存储和读取非常方便。(在这加代码,记住用户名和密码)
强大的多媒体
音乐、视频、录音、拍照等,可以用代码进行控制。
地理位置定位
移动设备相对于PC,地理定位功能应该可以算是一个很大的亮点,结合强大的地图功能,LBS 这一领域潜力非常大。例如外卖、打车、团购、社交、侦查等。
环境搭建
1.开发工具 以前是用Eclipse 现在推荐Android studio。Android Studio是基于Intellij IDEA开发的,插件安装非常简单,还集成了很多工具。
2.JDK java开发环境
3.Android SDK 谷歌提供的Android开发工具包。在开发时我们需要引入该工具包来使用相关API
Hello World项目的分析
- 分析Hello World案例
- 项目结构分析
- Android Studio使用
详细介绍
- 如何编写程序界面
- 常用控件的使用
2.1 TextView
2.2 Button
2.3 EditView
2.4 ImageView
2.5 ListView
2.6 … - 4种基本布局
3.1 线性
3.2 相对
3.3 帧布局
3.4 百分比布局
网络
- 子线程
将耗时的操作放到子线程中去,这里就需要用到java的多线程操作
- 更新UI
不允许在子线程中更新UI,因为UI是线程不安全的,必须在主线程中更新,否则会异常。
- 异步消息处理机制
权限
https://www.cnblogs.com/classic/archive/2011/06/20/2085055.html
应用上线
Android系统要求所有的应用软件必须有一个签名文件,直接通过AS运行程序会使用一个默认的签名文件(仅仅适用于开发阶段)
1.AS生成签名
2.使用签名打包
Gradle中使用
build中打包,会生成一个.apk的文件这个就是我们的安装包