Android 学习记录_系统结构, res 目录, App 目录下的 build.gradle 文件

Android 系统架构

Android 大致分为四层架构: Linux 内核层, 系统运行库层, 应用框架层, 应用层

1.Linux 内核层

Android 系统是基于 Linux 内核的, 这一层为 Android 设备的各种硬件提供了底层的驱动.

2. 系统运行库层

这一层通过一些 C/C++ 库来为 Android 系统提供了主要的特性支持.

在这一层还有 Android 运行时库:

它主要提供了一些核心库, 能够允许使用 Java 语言来编写 Android 应用.

Android 运行时库中还包含 Dalvik 虚拟机 (5.0 系统之后改为 ART 运行环境), 它使得每一个 Android 应用都能运行在独立的进程当中, 并且拥有一个自己的 Dalvik 虚拟机实例.

3. 应用框架层

这一层主要提供了构建应用程序时可能用到的各种 API.

4. 应用层

所有安装在手机上的应用程序都是属于这一层的.

Android 系统是通过包名来区分不同应用程序的, 因此包名一定要具有唯一性.

这段代码表示对 MainActivity 这个活动进行注册, 没有在 AndroidManifest.xml 里注册的活动是不能使用的.

intent-filter 里面的两行代码表示 MainAcitvity 是这个项目的主活动, 在手机上点击应用图标, 首先启动就是这个活动.

AppCompatActivity 是一种向下兼容的 Activity, 可以将 Activity 在各个系统版本中增加的特性和功能最低兼容到 Android 2.1 系统.

Activity 是 Android 系统提供的一个活动基类, 项目中所有的活动都必须继承它或者它的子类才能拥有活动的特性 (AppCompatActivity 是 Activity 的子类)

res 目录

res.PNG

1.drawable

用来存放图片

2.mipmap

用来存放应用图标

3.values

用来存放字符串, 样式, 颜色等配置

4.layout

用来存放布局文件

使用这些资源, 两种方式来引用

1. 在代码中通过 R.string.app_name 可以获得该字符串的引用

2. 在 xml 中通过 @string/app_name 可以获得该字符串的引用

注释: 其中 string 部分是可以替换的 (drawable,mipmap,layout)

App 目录下的 build.gradle 文件

App 目录下的 build.gradle 文件. PNG

1.apply plugin: 'xxx'

com.Android.application 表示这是一个应用程序模块

com.Android.library 表示这是一个库模块

区别:

应用程序模块是可以直接运行的

库模块只能作为代码库依附于别的应用程序模块来运行

2. Android 闭包

1.compileSdkVersion 指定项目的编译版本

2.buildToolsVersion 指定项目构建工具的版本

3.defaultConfig

applicationId 指定项目的包名

minSdkVersion 指定项目最低兼容的 Android 系统版本

targetSdkVersion 指定的值表示在该目标版本上已经做过了充分的测试, 系统将会为应用启用一些最新的功能和特性

versionCode 指定项目的版本号

versionName 指定项目的版本名

buildTypes 闭包: 用于指定生成安装文件的相关配置

debug 用于指定生成测试版安装文件的配置

release 用于指定生成正式版安装文件的配置

minifyEnabled 指定是否对项目的代码进行混淆 (true 表示混淆, false 表示不混淆)

proguardFiles 指定混淆时使用的规则文件, 这里指定了两个文件

proguard-Android.txt 是在 Android SDK 目录下的, 里面是所有项目通用的混淆规则

proguard-rules.pro 是在当前项目的根目录下的, 里面可以编写当前项目特有的混淆规则

3.dependencies 闭包: 指定当前项目所有的依赖关系

有 3 种依赖方式:

本地依赖: 可以对本地的 Jar 包或目录添加依赖关系

本地依赖声明:

implementation fileTree(dir: 'libs', include: ['*.jar'])

表示将 libs 目录下所有. jar 后缀的文件都添加到项目的构建路径当中

库依赖: 可以对项目中的库模块添加依赖关系

库依赖声明:

Implementation project(':helper')

远程依赖: 可以对 jcenter 库上的开源项目添加依赖关系

远程依赖声明:

implementation 'androidx.appcompat:appcompat:1.1.0'

声明:《第一行代码 (第 2 版)》

来源: http://www.jianshu.com/p/4a3e2f3257d4

gradle 区分系统_Android 学习记录_系统结构, res 目录, App 目录下的 build.gradle 文件...相关推荐

  1. 基于全志A33开发板linux系统移植学习记录(Boot0)

    基于全志A33开发板linux系统移植学习记录 第一章 Boot0基于ARMGCC的编译与修改 文章目录 基于全志A33开发板linux系统移植学习记录 前言 一.全志A33简介以及上电引导流程 二. ...

  2. android 读build.prop,Android系统下的build.prop文件

    Android系统下的build.prop文件,用adb shell进入,再进入到system目录,查看该目录下的文件,会看到build.prop文件,用exit命令退出. 1551927518(1) ...

  3. 西瓜书学习记录_绪言

    系列文章目录 文章目录 系列文章目录 前言 一.知识回顾 二.课后习题思考 1.3 总结 前言 该系列文章主要用于记录笔者在大三下学期的西瓜书学习过程 本文讨论西瓜书绪言中的学习体会以及对某些问题的思 ...

  4. 超强实时跟踪系统PP-Tracking学习记录

    PP-Tracting学习记录 超强实时跟踪系统PP-Tracking:飞桨AI Studio - 人工智能学习实训社区 (baidu.com) 目标检测 多目标跟踪 仅检测当前帧 物体的id信息可以 ...

  5. 【拉扎维书中的电路仿真学习记录_未完待续】

    [拉扎维书中的电路仿真学习记录] 第四章 1. 简单的差动电路 2 习题4_4 第四章 1. 简单的差动电路 1.p32, 图4.6,简单的差动电路 2.ADE设置 3.输入输出波形 Vin1 与 V ...

  6. 学习记录_检验和的一般求法

    初次学习网络协议记录,如有错误请见谅,欢迎大家补充修改哈. 1.先将首部内的检验和设置为全0: 2.依据协议类型拿到那些用于计算检验和的字段排序和对应的值: 3.按照排序,进行每16个bit作为一个整 ...

  7. 学习记录_美术部分_美术理论基础

    目录 1.光影 2-透视 3.色彩 4.构图 5.镜头语言 6.游戏概念设计 一.光影 光影定义 黑白灰与明暗五大调子 游戏中的光影 利用或者增强阴影效果,来增加体感,使物体通透 光影的黑白灰变化对氛 ...

  8. leetcode学习记录_贪心

    贪心的特点就是不断求得局部最优解 然后用局部最优解求得全局最优解 55. 跳跃游戏 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 . 数组中的每个元素代表你在该位置可以跳跃的最大长度 ...

  9. linux 桌面系统开发学习记录

    前言 来了deepin做文件管理器项目开发,已经有了4个月时间了,学了些许linux基础知识,这个让我联想到linux下做应用开发的一些优点和缺点,先暂时做个凌乱的总结,以便后期整理资料.这里的资料整 ...

  10. PHP学习记录_基本语法

    1.在PHP中,输出的字符串可以用双引号作分隔符,也可用单引号作分隔符.如果用双引号作分隔符,则字符串中的变量可以自动被替换成变量的值(这是其他程序设计语言所不具备的功能).如果用单引号作分隔符,则不 ...

最新文章

  1. 以sysdba身份登录oracle报ORA-1031权限不足错误之完美分析
  2. HTTP错误汇总及其解决方法
  3. 博客园电子月刊[第一期]
  4. 可视化Python设计工具
  5. Leecode 222. 完全二叉树的节点个数——Leecode日常刷题系列
  6. Qt移动应用开发(八):实现跨平台的QML和OpenGL混合渲染
  7. html5自动把某个层放在屏幕底部,告诉你一个将 footer 保持在底部的最好方法
  8. 前端学习(3104):react-hello-虚拟dom的两种创建方式
  9. 数据库原理—DBS的物理组成和结构模式(五)
  10. android 联系人存储结构
  11. mysql监控 代码审计_Seay源代码审计系统2.1及源码开放 人人都是代码审计师
  12. opera档案学习(二)
  13. 从0开始的网游ARPG实战案例:暗黑战神(第五六章:主城角色控制和任务引导系统)
  14. 计算机中模板与母版的区别,PowerPoint的模板和母版有什么区别?
  15. 3dmax布尔运算差集后图形消失怎么办
  16. PyTorch——device与cuda.device用法
  17. check_cbss_kafka.sh
  18. JS修改标签的css样式
  19. jy-09-SERVLETJSP——Servlet-Cookie-Session
  20. 三部操作实现 ubuntu安装图像化桌面

热门文章

  1. 多个中间件_小T说:消息中间件,为什么用RabbitMQ及支持的场景
  2. mysql针对特定表不做binlog_MySQL笔记--主从复制
  3. plc模拟器软件_举例说明 你的PLC和触摸屏为什么总是通讯不上?
  4. 如何自己去写一个鼠标驱动_方法 - 做手写电子笔记的方法——如何在Windows电脑/平板上做手写笔记(包括非触屏电脑)(MacOS也可以)...
  5. python遍历目录压缩文件夹_zip包含一个档案文件夹,如何使用Python获取存档中每个zip的注释?...
  6. java pattern 转义_浅谈关于Java正则和转义中\\和\\\\的理解
  7. Lost Cows POJ 2182 思维+巧法
  8. 10.31课程.this指向
  9. netstat 查看网络状态
  10. HTTP传递数据的几种方法