美文网首页
第一行代码(一)

第一行代码(一)

作者: radish520like | 来源:发表于2017-12-20 00:39 被阅读0次

    第一章内容系统架构和项目结构以及Gradle的简介

    本书算是Android入门比较经典的书籍,作者--郭霖,以前学习的时候看过第一版,几个月前入手了第二版(有郭神签名哦!),期间换了工作,忙了一段时间,现在捡起来重温一下经典之作!!
    注:本文只是读书笔记,想看原著请购买书籍

    一、Android系统架构

      Android系统架构大致分为四层:Linux内核层、系统运行层、应用架构层和应用层。

    1.Linux内核层:

       Android系统是基于Linux内核的,该层为Android设备各种硬件提供了底层的驱动,如:显示驱动、音频驱动、相机驱动、蓝牙驱动等等。

    2.系统运行层:

      该层通过一些C/C++库为Android系统提供了支持。如SQLite库提供了数据库支持,OpenGL|ES库提供了3D绘图的支持,WebKit提供了浏览器内核支持等。
      在这一层还有Android运行时库,主要提供了一些核心库,允许开发者使用Java语言来编写Android应用。还包含了Dalvik虚拟机(5.0系统之后改为ART运行环境),它使得每一个Android应用都能运行在一个独立的进程中,并拥有一个自己的Dalvik虚拟机实例。相较于Java虚拟机,Dalvik是专门为移动设备制定的,针对手机内存、CPU性能有限等情况做了优化处理。

    3.应用架构层:

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

    4.应用层:

      所有安装在手机上的应用都属于这一层,比如系统自带的联系人,短信或者从应用商店下载的app,还包括你自己开发的程序。

    二、Android的项目目录结构

    image.png
    1、.gradle和.idea
      这两个目录下放置的都是AndroidStudio自动生成的文件,无需关心,无需手动编辑。
    2、app
      项目中的代码和资源文件几乎都放置在该目录下
    3、build
      主要包含了一些在编译时生成的文件
    4、gradle
      该目录下包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前下载gradle,而是会自动根据本地的缓存情况决定是否需要下载gradle,AndroidStudio默认没有启动gradle wrapper的方式,如果需要打开,点击File->Settings->Build,Execution,Depolyment->Gradle进行配置
    5、.gitignore
      顾名思义,该文件是用来将指定的目录或文件排除在版本控制之外的
    6、build.gradle
      项目全局的gradle构建脚本
    7、gradle.properties
      全局的gradle配置文件,配置的属性会影响到项目中所有的gradle编译脚本
    8、gradlew和gradlew.bat
      用来在命令行界面中执行gradle命令的,其中gradlew是在Linux或Mac系统中使用的,gradlew.bat是在Windows系统中使用的
    9、MyApplication.iml
      iml文件是所有IntelliJ IDEA项目都会自动生成的一个文件,用于标识这是一个IntelliJ IDEA项目
    10、local.properties
      指定本机中的AndroidSDK路径,内容通常时自动生成的
    11、settings.gradle
      指定项目中所有引入的模块

    app目录下的结构

    1、build
      同外层的build目录类似,包含一些在编译时自动生成的文件,但是内容更多更杂
    2、libs
      用于存储第三方jar包
    3、androidTest
      用于编写AndroidTest测试用例,可以进行一些自动化测试
    4、java
      您写的代码
    5、res
      项目中使用到的图片、布局、字符串等资源文件
    6、androidManifest.xml
      Android项目的配置文件
    7、test
      用来编写UnitText测试用力的,自动化测试的另一种方式
    8、.gitignore
      将app模块内的指定的目录或文件排除在版本控制之外
    9、app.iml
      IntelliJ IDEA项目自动生成的文件
    10、build.gradle
      这是app模块的gradle构建脚本,文件中会指定很多项目构建相关的配置
    11、proguard-rules.pro
      用于指定混淆规则

    详解build.gradle文件

      AndroidStudio是采用Gradle来构建项目的。Gradle是非常先进的项目构建工具,使用了一种基于Groovy的领域特定语言来声明项目设置。
    1、最外层目录下的build.gradle文件


    image.png

      两处repositories的闭包中都声明了jcenter()配置,它是一个代码托管仓库,很多Android开源项目都会选择将代码托管到jcenter上,声明了这行配置后,就可以在项目中轻松引用任何jcenter上的开源项目了。
      dependencies闭包中使用classpath声明了一个Gradle插件,如果我们想使用Gradle来构建Android项目,则需要声明com.android.tools.build:gradle:x.x.x这个插件,后面部分是插件的版本号。
      通常情况下该文件不需要修改,除非想添加一些全局的项目构建配置
    2、app目录下的build.gradle文件


    image.png
      第一行应用了一个插件,一般有两种值可选:com.android.application表示这是一个应用程序模块,com.android.library表示这是一个库模块。这两个区别在与,一个是可以直接运行的,一个只能作为代码库依附于别的应用程序模块来运行。
      接下来是android闭包,可以配置项目构建的各种属性。compileSdkVersion指定项目的编译版本,buildToolsVersion指定项目构建工具的版本。然后嵌套了一个defaultConfig闭包,对项目的更多细节进行配置,applicationId用于指定项目的包名(如果要修改包名,可以在这里修改),minSdkVersion用于指定项目最低兼容的Android系统版本,targetSdkVersion表示你在该版本上已经做过了充分的测试,系统将会为你的应用程序启用一些最新的功能和特性,versionCode用于指定版本号,versionName用于指定项目的版本名
      buildTypes闭包用于指定生成安装文件的相关配置,通常只会有两个子闭包,debug和release。debug闭包是可以忽略不写的。release闭包中,minifyEnabled指定是否对项目的代码进行混淆,true表示混淆,false表示不混淆。proguardFiles指定混淆时使用的规则文件,这里指定了两个,一个是proguard-android.txt是在Android SDK目录下的,里面是所有项目通用的混淆规则。另一个是proguard-rules.pro是在当前项目的根目录下的,里面可以编写当前项目特有的混淆规则。

      dependencies闭包指定当前项目所有的依赖关系。通常AndroidStudio项目一共有3种依赖方式:本地依赖、库依赖和远程依赖。本地依赖可以对本地的jar包或目录添加依赖关系。库依赖可以对项目中的库模块添加依赖关系。远程依赖则可以对jcenter库上的开源项目添加依赖关系。
      compile fileTree就是一个本地依赖声明,表示将libs目录下的所有.jar后缀的文件都添加到项目的构建路径当中。compile则是远程依赖声明,com.android.support是域名部分,用于和其他公司的库做区分;appcompat-v7是组名称,用于和同一个公司中不同的库做区分;26.+是版本号,用于和同一个库不同的版本做区分。Gradle会先检查本地是否有这个库的缓存,如果没有则会自动联网下载,然后再添加到项目的构建路径中。至于库依赖没用到,基本格式是compile project后面加上要依赖的库名称,比如库模块的名字叫helper,那么写法是compile project(':helper'),testCompile是用于声明测试用例库的

    小技巧

      输入logd,然后按下Tab键,会自动补全一条完整的打印语句。在onCreate()方法外面输入logt,按下Tab键,会以当前类名作为值自动生成一个TAG常量

    下一篇文章 https://www.jianshu.com/p/fe0f4733e31f

    相关文章

      网友评论

          本文标题:第一行代码(一)

          本文链接:https://www.haomeiwen.com/subject/spcwwxtx.html