Android 开发之初识 Android
最近在学习 Android 方面的知识,刚好趁着这个机会整理一下 Android 开发方面的一些知识点。从标题中可以看到,今天只是给大家简单介绍一下 Android 的基本内容以及 Android的项目目录结构。
内容大纲
- 1. Android 前世今生
- 1.1 Android 介绍
- 1.2 Android 发展历程
- 2. Android 架构
- 2.1 Linux内核层
- 2.2 Libraries 系统运行库
- 2.3 应用框架层
- 2.4 应用层
- 3. Android 四大组件
- 4. Android 开发准备
- 5. 创建 Android 项目
- 6. Android项目结构详解
1. Android 前世今生
1.1 Android 介绍
Android 原为机器人的意思,现在指的是基于Linux系统的开源的操作系统。目前 Android SDK已经更新到31了,也就是Android 12,我们可以在 Android官网或者维基百科 中进行查看,每一个Android SDK版本对应一个Android版本,当别人问你,你现在用的SDK版本是多少啊,这个问题不能不知道哈。下图展示的是 Android的 logo,头上插两个天线的机器人。
1.2 Android 发展历程
在2003年10月,Andy Rubin 和他的三个小伙伴一起创办了 Android 公司;2005年8月份谷歌收购了这家仅仅成立了22个月的公司,并让 Andy Rubin继续负责 Android项目。经过数年研究,谷歌在2008年推出了 Android系统的第一个版本。当然一个产品的发展肯定会受到各方质疑的,下面就有几个小故事。第一个小故事:乔布斯认为 Android是一个抄袭iPhone的产品,里面剽窃了很多iPhone的创意,并声称要毁掉 Android,但结果可想而知啊。。。第二个小故事:Android是基于 Linux 开发的操作系统,在2021年被Linux团队从 Linux 内核主线中除名。。。第三个故事:Android中的应用程序都是使用java开发的,甲骨文则针对 Android侵犯 java知识产权一事对谷歌提起了诉讼。。。即使这样也没有阻碍 Android的发展。再加上Android操作系统是开源的,所以Android很快就成功的打入市场。
2. Android 架构
Android 包含四大组件,如下图所示
从底向上依次为大家介绍
2.1 Linux内核层
Android的核心系统服务基于Linux2.6内核,如安全管理器,进程管理器、网络协议栈和一些驱动都依赖于Linux2.6内核。Android更多的是需要一些与移动设备相关的驱动程序,主要的驱动有:Display Driver(显示驱动)、Camera Driver(照相机驱动)、Bluetooth Driver(蓝牙驱动)、Keypad Driver(键盘驱动)、Power Driver(能源驱动)等
2.2 Libraries 系统运行库
这一层包含两个部分:Libraries 函数库和 Android RunTime 运行时。
(1)Libraries函数库
主要是使用C/C++编写的,Android应用程序开发人员并非直接使用此函数库,而是通过更上层的应用程序框架来使用此函数功能,所以该函数库被称为原生函数库(Native Libraries)。此函数库依照功能又细分为各种类型的函数库,如媒体函数库,界面管理函数库、SQlite等
(2)Android Runtime
主要包含两个内容,一个Android核心函数库、一个是Dalvik 虚拟机。
Android核心函数库:所提供的功能大部分与java核心函数库相同。
Dalvik 虚拟机:每个Java程序都运行在Dalvik虚拟机之上。与PC一样,每个Android应用程序都有自己的进程,Dalvik虚拟机只执行".dex"的可执行文件。当Java程序通过编译,最后还需要通过SDK中的 “dx"工具转化成”.dex"格式才能正常地在虚拟机上执行。
2.3 应用框架层
就是 Android 的 API,程序员使用此 API 可以快速开发出 Android 应用程序,比如,用户接口、活动管理、内容提供者、资源管理器等。
2.4 应用层
是用java语言编写的运行在虚拟机上的程序,这些应用程序在设备上都是以一个小图标表示,用户通过点击图标来运行程序。Android系统一般内建有Email、短信收发程序、浏览器、联系人等功能的应用程序。
3. Android 四大组件
Android系统的四大组件:
活动(Activity):Activity 是Android应用程序的门面,凡是在应用中能够看到的东西,都是放在活动中的。
服务(Service):Service在后台运行
广播接收器(Broadcast Receiver):允许应用接收来自各处的广播消息,比如电话、短信等,当然也可以向外发出广播消息。
内容提供器(Content Provider):为应用程序之间共享数据提供了可能,比如想要读取系统通讯录中的联系人,就需要用过内容提供器来实现。
具体的代码我在后面的Blog中给大家展示。
4. Android 开发准备
到这里对于Android 我们已经有了一个初步的认识,那接下来我们就要开始进入 Android 开始实战了。在开始实战之前,我们要有一些准备操作。
- 安装JDK:对于JDK的安装,网上教程一大堆,当然也可以参考小编的BlogJDK1.8安装
- Android Studio
- Android SDK :这个插件可以在 Android Studio中安装
我们已经初步认识了Android。本篇文章主要给大家分享 Android 的项目目录结构。我的IDE是Android Studio。
5. 创建 Android 项目
每一个编程语言写出的第一个程序无疑是 Hello World。按照传统我们也写一个Hello World。
第一步:创建一个Android 项目。名为 My Application
打开 Android Studio——Create new Project——Empty Activity ——Next——Finish。
其中,name: My Application ,这也是应用名称,应用安装在手机上之后显示的名字就是My Application。
Package name :包名,至少两个部分组成,否则会显示错误信息。
Minimum SDK :也就是Android SDK的最小支持的版本,选择API 16的话,表示我们的应用可以运行在A PI 16或以上版本中。
6. Android项目结构详解
任何一个新建的项目都会使用默认的 Android 模式的项目结构,为了接近真实的项目结构,我们切换成 Project 模式
- .gradle 和 .idea
这两个目录放置的是 Android Studio 自动生成的一些文件,无须关心,也不用去编辑。 - app
项目中的代码、资源等内容基本上是放在这个目录下的。
比如逻辑代码:app/src/main/java
资源文件:app/src/main/res - gradle
这个目录下包含了 gradle wrapper 的配置文件,使用 gradle wrapper的方式是不需要提前讲gradle下载好,系统会自动根据本地的缓存情况决定是否需要联网下载 gradle。 - .gitignore
这个文件是用来将指定的目录或文件排除在版本控制之外的。 - build.gradle
这是项目全局的gradle构建脚本,通常这个文件中的内容不需要修改的。 - gradle.properties
是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编译脚本。 - gradlew 和 gradlew.bat
这两个文件是用来在命令行界面中执行gradle命令的,其中gradlew是在linux 或者Mac系统中使用的,gradlew.bat 是在Windows 系统中使用的。 - local.properties
这个文件用于指定本机中的Android SDK路径,通常是自动生成,我们不需要修改,如果本机中的Android SDK位置发生了变化,那么就需要改这个文件。 - settings.gradle
这个文件用于指定项目中所有引入的模块,由于项目中目前只有一个app模块,因为该文件中也就只引入了这一个模块。通常情况下模块的引入都是自动完成的,手动修改的场景比较少。
下面我们着重讲解 App目录下的文件
build
这个目录和外层的build目录类似,主要包含一些在编译时自动生成的文件,不过它里面的内容更加复杂,不需要过多关心。(当运行程序之后才会显示build文件)libs
如果项目中使用到了第三方jar包,就需要把这些jar包都放在libs目录下,放在这个目录下的jar包都会被自动添加到构建路径中。androidTest
用来编写Android Test测试用例的,可以对项目进行一些自动化测试。java
java目录是放置我们所有java代码的地方res
项目中使用的所有图片、布局,字符串等资源都要存放在这个目录下。
图片放在drawable目录下、布局放在layout目录下、字符串放在values目录下。AndroidManifest.xml
这是整个Android项目的配置文件,在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。打开AndroidManifest.xml 文件,活动一般在application标签下注册
<applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.MyApplication"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application>
test
用来编写Unit Test 测试用例的,是对项目进行自动化测试的另一种方式。.gitignore
这个文件用于将app模块内的指定的目录或文件排除在版本控制之外,作用和外层的.gitignore 文件类似。app.iml
项目自动生成的文件,我们不需要关心或修改这个文件中的内容。build.gradle
这是app模块的gradle构建脚本,这个文件中会指定很多项目构建相关的配置。proguard-rules.pro
这个文件用于指定项目代码的混淆规则,当代码开发完成之后打包安装包文件,如果不希望代码被被人破解,通常会将代码进行混淆,从而让破解者难以阅读。
好了,到目前为止对于Android 相信你已经有个大致的认识,那就休息一下吧。
Android 开发之初识 Android相关推荐
- 老罗Android开发视频教程( android解析json数据 )4集集合
老罗Android开发视频教程( android解析json数据 )4集集合 老罗Android开发视频教程( android解析json数据 ) 第一集android解析json数据 http:// ...
- Android 开发工具集合 - (Android Dev Tools)
收集整理Android开发所需的Android SDK.开发中用到的工具.Android开发教程.Android设计规范,免费的设计素材等. 欢迎大家推荐自己在Android开发过程中用的好用的工具. ...
- [android开发必备]Android开发者社区汇总
[android开发必备]Android开发者社区汇总 经常收到很多人问做android开发去哪个社区,每次都回答的零零碎碎的很比系统,今天统一整理下,把截至目前为止有价值的android开发社区汇总 ...
- 视频教程-快速入门Android开发 视频 教程 android studio-Android
快速入门Android开发 视频 教程 android studio 任苹蜻,爱学啊创始人 & CEO,曾就职于某二车手公司担任Android工程师后离职创办爱学啊,我们的宗旨是:人生苦短,我 ...
- 全网最全Android开发工具,Android开发框架大全
涵盖Android方方面面的技术, 目前保持更新. 时刻与Android开发流行前沿同步. 目录 一.工具 Android开发工具 在线工具宝典大全 二.框架 *缓存框架* DiskLruCache ...
- Android开发工具视频Android 12(S)准备
Android开发工具视频Android 12(S)准备 适配步骤 下载最新的Android studio工具,点我到官网下载最新的吧! 最新版的studio规定jdk使用必须至少11,所以请移步下载 ...
- Android开发工具——ADB(Android Debug Bridge) 一概览
Android Debug Bridge (adb) 是一个android开发人员必会的多功能的调试工具,确实它的名字一样,它在开发者和目标机器之间,架起了一座bridge. adb的用法很简单,只要 ...
- 搭建android开发环境,android studio + Genymotion
刚开始学习android,记录下自己的学习过程,期望和大家一起学习.进步 既然要学习android开发,首要之事就是搭建android开发环境,以前的android的开发环境都是eclipse+and ...
- android 开发小工具,Android 开发者必备的八款小工具
在做Android 开发过程中,会遇到一些小的问题,虽然自己动手也能解决,但是有了一些小工具,解决这些问题就得心应手了,今天就为大家推荐一些Android 开发必备的小工具. Android Pixe ...
- Android开发入门教程--Android应用程序结构分析
2019独角兽企业重金招聘Python工程师标准>>> 一.新建HelloWorld项目: 1.打开Eclipse,点击"File"->"New& ...
最新文章
- php并发取源码,PHP读取大文件源码示例-Swoole多进程读取大文件
- Selenium定位HTML元素(Python)
- android按钮放图片不显示文字,Android 自定义标签 Imagebutton实现ImageButton里放置文字...
- 工作说明书(SOW)
- HR问:“对我们公司你有什么问题要问的吗”,怎样回答才算完美!
- java多线程 Semaphore CountDownLatch ScheduledExecutorService
- excel小写转大写公式_不要眨眼!中英文、大小写转换,一秒就搞定!
- 笔记本电脑触摸板手势教程——快捷操作
- Wireshark: Getting Started
- 后端面试(一)计算机网络相关
- Charles抓取手机APP接口数据使用方法
- Python机器学习笔记之pandas绘图
- kafka topic消息分配partition规则
- Linux常见的压缩工具
- 基于Arduino的魔兽世界挂机装置
- python多线程、多进程
- 无线网卡、无线模块和无线模组的区别
- Excel技巧:如何将空格分隔的一组数据粘贴到excel为列
- [模拟][模电][面试][运放]仪表放大器
- 安装Windows7虚拟机+ERPU8-10.1软件+SQLserver2008R2
热门文章
- 开篇鸿蒙谁为情种,曹雪芹 红楼梦引子 开辟鸿蒙,谁为情种?都只为风月情浓。 这句话什么意思 只要这句话的解释...
- 关于robots协议
- 提高iOS开发效率的方法和工具
- 使用Scrum敏捷开发 —实现多维度碎片化迭代
- 湖南大学计算机专业推免生,湖南大学2018年招收推荐免试攻读研究生简章
- 解决SSLHandshakeException :sun.security.validator.ValidatorException: PKIX path building failed:
- “舒淇半停工原因”上热搜:人生下半场,拼的是健康
- 微信小程序入门八头像上传
- 银联支付(chinapay)java接入避坑指南
- nginx ajax 错误500,聊聊nginx报错499问题