Android系统架构、项目结构和APK文件目录

Android系统架构

《Android系统架构、项目结构和APK文件目录》 Android5.0以后的系统架构

一、Applications(应用程序)

Home:桌面

Contacts:联系人

Phone:电话

Dialer:拨号

Voice Dial:语音拨号

Browser:浏览器

SMS/MMS:短信/彩信

IM:即时通讯

Email:电子邮件

Camera:照相机

Photo Album:相册

Media Player:播放器

Calendar:日历

Clock:时钟

Alarm:闹铃

Caculator:计算器

二、Application Framework(应用程序框架)

常用的Java API接口

Activity Manager:活动管理器

Content Providers:内容共享器

Telephony Manager:电话管理

Notification Manager:通知管理

Window Manager:窗口管理器

View System:视图系统

Resource Manager:资源管理

Location Manager:定位管理

Package Manager:包管理

XMPP Service:可扩展通讯和表示协议服务,用于即时通讯

三、系统运行库

(一)Android Runtime(Android运行时)

Core Libraries:Java核心库

ART(Android runtime):Android运行环境,从Android4.4开始发布

Dalvik Virtul Machine:达尔维克虚拟机,在Android5.0以后被ART取代

(二)Libraries(C/C++库)

Surface Manager:界面管理

Media Framework:多媒体框架

SQLite:数据库

Blink:Chrome浏览器的内核,就是原来的Webkit内核

OpenGL ES:3D图形引擎

SGL:2D图形引擎

FreeType:免费字体授权

SSL(Secure Sockets Layer):安全套接层

libc:C语言基本函数库

四、Hardware Abstraction Layer(硬件抽象层)

        Android5.0新增的层,位于Linux内核之上,系统运行库之下。简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽底层的实现细节。

Graphics:图像

Audio:音频

Camera:照相机

Bluetooth:蓝牙

GPS:全球定位系统

Radio(RIL):无线广播接口

WiFi

五、Linux Kernel(Linux内核)

WiFi Driver:WiFi驱动

Bluetooth Driver:蓝牙驱动

Camera Driver:照相机驱动

Display Driver:显卡驱动

Audio Drivers:声卡驱动

Flash Memory Driver:闪存驱动

Shrared Memory Driver:小内存驱动

USB Driver:USB驱动

Keypad Driver:键盘驱动

Binder(IPC) Driver:进程通信驱动

Power Management:电源管理

《Android系统架构、项目结构和APK文件目录》 Android视图(不是项目真实结构)

Android项目结构(以Android Studio的Project视图为例)

《Android系统架构、项目结构和APK文件目录》 Project视图(项目真实结构)

切换到Project视图才能查看项目真实结构

一、.gradle:软件自动生成文件,无需修改

二、.idea:软件自动生成文件,无需修改

三、app

(一)build:编译时自动生成文件,无需修改

(二)libs:第三方jar包存放目录

《Android系统架构、项目结构和APK文件目录》 src目录,项目代码都在这

(三)src

1.androidTest—ExampleInstrumentedTest.xml 测试用例

2.main

(1)assets:存放网页、图片、JSON等资源

需要时手动创建,通过getAssets()方法获取AssetManager对象

(2)java:存放项目java代码

cn.kgc.app001MainActivity.java 主界面

(3)jniLibs:存放C/C++的动态库(.so文件)

(4)res:存放项目静态资源

❶anim:动画,默认不生成,需要时手动创建

❷drawable:图片

baby001.png(xxhdpi)图片资源

shape.xml 形状,默认不生成,需要时手动创建

selector.xml 选择器,默认不生成,需要时手动创建

❸layout:布局

activity_main.xml 布局文件

❹menu:菜单,默认不生成,需要时手动创建

❺mipmap:图标

ic_launcher.png(5)图标资源

❻raw:原始照片文件,默认不生成,需要时手动创建

❼values 英语

《Android系统架构、项目结构和APK文件目录》 values目录

colors.xml  颜色

dimens.xml(2)尺寸

strings.xml 字符串

styles.xml  样式

values-zh-cn 简体中文

xml 其他xml文件,默认不生成,需要时手动创建

(5)AndroidManifest.xml:APP配置文件

包名称 package=”cn.bdqn.app001″ 

APP图标 android:icon=”@mipmap/ic_launcher” 

APP名称 android:label=”@string/app_name” 

APP主题 android:theme=”@style/AppTheme”

Activity名称 android:name=”.MainActivity”

设置此Activity为首页 android:name=”android.intent.action.MAIN”

启动此Activity android:name=”android.intent.category.LAUNCHER”

3.test—ExampleUnitTest.xml 单元测试用例

(四).gitignore:将app指定目录排除在版本控制之外

(五)app.iml:Intellij IDEA自动生成文件,无需修改

(六)build.gradle:app gradle构建脚本

compile project(‘:abc:PullToRefresh’) 配置第三方库

compileSdkVersion 25            当前SDK

buildToolsVersion “25.0.1”      打包工具版本

(Ecplise在project.properties设置sdk.buildtools=17.0.0)

applicationId “cn.bdqn.app001”  包名

minSdkVersion 15                最低SDK

targetSdkVersion 25            最高SDK

versionCode 1                  内部版本号,int类型

versionName “Mars2”            发布版本号,String类型

(七)proguard-rules.pro:代码混淆规则

四、build:编译时自动生成文件,无需修改

五、gradle:gradle wrapper配置文件

六、.gitignore:将指定目录排除在版本控制之外

七、build.gradle:项目全局的gradle构建脚本

classpath ‘com.android.tools.build:gradle:2.0.0’gradle版本号

八、gradle.properties:全局的gralde配置文件

org.gradle.jvmargs=-Xmx1536m 可用内存

九、gradlew:Linux和Mac中的gradle命令

十、gradlew.bat:Windows中的gradle命令

十一、HelloWorld.iml:Intellij IDEA自动生成文件,无需修改

十二、local.properties:指定本地sdk路径

sdk.dir=D\:\\android\\sdk   SDK目录

十三、settings.gradle:指定项目中所有引入的模块

在项目根目录新建abc目录

将第三方Library库文件复制到abc目录下,导入库

include ‘:app’, ‘:abc:PullToRefresh’

APK(Android Package)文件目录

下载apk后必须用压缩软件解压出来

《Android系统架构、项目结构和APK文件目录》 APK文件目录

一、assets 存放网页、图片、JSON等资源

1.系统不会自动为其生成一个资源ID

2.通过getAssets()方法获取AssetManager对象

二、lib/armeabi 存放C语言文件

libgetuiext.so 广告推送接口

三、META-INF

《Android系统架构、项目结构和APK文件目录》 META-INF文件夹

CERT.RSA          公钥和加密算法,文件名可以修改

CERT.SF          签名

MANIFEST.MF      摘要

rxjava.properties 一个实现异步操作的Java库

四、org/apache/http/entity/mime

version.properties 存放Apache授权信息

五、res 可编译资源

《Android系统架构、项目结构和APK文件目录》 res文件夹

(一)anim    动画

(二)color    颜色

(三)drawable 图片

文件后缀为 9.png是通过draw9patch生成的可自动伸缩位图

(四)layout  布局

(五)mipmap 存放APP启动图标

(六)raw    直接复制到设备中的任意文件,无需编译

(七)values 值

array.xml  数组

colors.xml  颜色

dimens.xml  尺寸

strings.xml 字符串

styles.xml  样式

(八)xml    通过Resources.getXML() 读取的任意文件

六、resources.arsc 编译后的二进制资源文件

七、classes.dex 最终生成的Dalvik字节码

八、androidannotations-api.properties 注解框架

九、AndroidManifest.xml 应用程序配置文件

Java发展简史:从Oak到Java8.0  Java编程规范

Android发展简史:从《未来夏娃》到Android7.1

Android版本与API、NDK对照表,发布时间与市场占有率

JDK的安装和配置  Eclipse的安装、汉化、自动提示和常用快捷键

Android Studio的安装、配置、使用技巧和常用快捷键

App原型设计、UI设计、应用开发、内测、发布、推广常用工具大全

2016年中国行政区划总表(截至2016年12月31日)

2017年司法考试瑞达法考导学班讲义(全8本)PDF下载

《Android系统架构、项目结构和APK文件目录》 风动天下公众号:fdtx2015

    原文作者:风动天下
    原文地址: https://www.jianshu.com/p/877ab7e5142b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞