Android 第一行代码

Android 第一行代码

Android系统架构

  • Linux内核层:Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层驱动。(驱动:驱动硬件动起来的程序)
  • 系统运行库层:各种库,如C/C++库来为Android系统提供主要特性支持。如SQLite库提供了数据库的支持。
  • 应用框架层:提供了构建应用程序时可能用到的各种API(应用程序编程接口,即平时说的接口),Android自带的一些核心应用就是用这些API来完成的。
  • 应用层:所有安装在手机上的应用程序都是属于这一层的。

Android开发环境

  • JDK:JDK是Java语言的软件开发工具包,它包含了Java的运行环境、工具集合、基础类库等内容。
  • Android SDK:Android SDK是谷歌提供的Android开发工具包,在开发Android程序时,我们需要通过引入该工具包,来使用Android相关的API。
  • Android Studio:很早以前安卓项目都是用Eclipse开发的,后谷歌推出一款官方的IDE Android Studio

Android目录结构

大目录结构

在这里插入图片描述

  • .gradle和.idea:AS自动生成的一些文件,无需关心。
  • app:项目中的代码、资源几乎都在这个目录之下,后面开发工作也是在这个目录之下,非常重要。
  • build:包含编译时自动生成的一些文件。
  • gradle:包含gradle wrapper配置文件(不太了解是干啥用的)
  • .gitignore:用来将指定的目录或文件排除在版本控制之外
  • gradle.properties:全局的gradle配置文件,在这里配置的属性会影响到项目中所有的gradle编译脚本。
  • gradlew和gradlew.bat:这两个文件是用来在命令行界面执行gradle命令的。其中,gradkew是在Linux或Mac系统使用,gradlew.bat是在Windows系统中使用的。
  • Begin.iml:iml是所有IntelliJ IDEA项目都会生成的一个文件,iml文件用于标识这是一个IntelliJ IDEA项目(Android Studio是基于IntelliJ IDEA开发的)。我们不需要修改这个文件任何内容。
  • build.gradle:项目全局的gradle构建脚本。
  • local.properties:这个文件用于指定本机中的Android SDK路径。通常不需要修改。
  • settings.gradle:用于指定项目中所有引入的模块。?没太明白。

app目录下的结构

在这里插入图片描述

  • build:这个目录和外层build目录类似,主要包含了一些在编译时自动生成的文件,无需过多关心。
  • libs:项目中使用到的第三方jar包都会存放在该目录下,放到这个目录下的jar包都会被自动添加到构建路径里去。
  • androidTest:此处用来编写Android Test测试用例,可以对项目进行一些自动化测试。
  • java:存放所有Java代码的地方
  • res:项目中使用到的所有图片、布局、字符串等资源都要存放在这个目录下。当然还会有很多子目录,比如专门存放图片的drawable目录,专门存放布局的layout目录等
  • AndroidManifest.xml:整个项目的配置文件,程序中定义的所有四大组件都要在这个文件里注册,另外还可以在这个文件里给应用程序添加权限声明。以后会详细说明。
  • test:用来编写Unit Test测试用例,是对项目进行自动化测试的另一种方式?
  • .gitignore:用于将app模块内指定的目录或文件排除在版本控制之外,作用和外层的.gitignore类似。
  • app.iml:IDEA项目自动生成的文件。
  • build.gradle:app模块的gradle构建脚本,这个文件中会指定很多项目构建相关的配置。
  • proguard-rules.pro:用于指定项目代码的混淆规则,比如代码完成开发后,不希望别人破解,便可通过此文件加密。

res目录结构

在这里插入图片描述

  • drawable:用于存放图片
  • layout:存放布局
  • mipmap:用于存放应用图标
  • values:存放字符串、样式、颜色等配置
    这里,这么多drawable和mipmap文件是为了让程序能够更好的兼容各种设备。

那么如何引用这些资源?

  • 在代码中通过R.string.app_name可以获得该字符串的引用。
  • 在XML中通过@string/app_name可以获得该字符串的引用。
    其中,string部分是可以替换的,具体取决于自己要引用的资源,如图片就修改成drawable。

详解build.gradle文件

外层目录下该文件

在这里插入图片描述
在这里插入图片描述

忽略语法,两处括号中都声明了jcenter()配置。jcenter其实是一个代码托管仓库,很多Android开源项目都会将代码托管到jcenter上,声明该配置后,我们就可以在项目中轻松引用任何jcenter上的开源项目了。

后面,dependencies闭包中使用classpath声明了一个Gradle插件。原因是Gradle并不是专门为构建Android项目而开发的,Java、C++等很多种项目都可以使用Gradle来构建。因此如果我们想使用它来构建Android项目,则需要声明这个插件,其中3.6.1是版本号。

app目录下该文件

在这里插入图片描述

第一行应用了一个插件,一般有两种值可选:

  • com.android.application 表示这是一个应用程序模块
  • com.android.library 表示这是一个库模块

应用程序模块与库模块最大的区别在于,一个是可以直接运行的,一个只能作为代码库依附于别的应用程序模块来运行。
在这里插入图片描述

接下来是一个大的android闭包,在这个闭包当中我们可以配置项目构建的各种属性。

  • compileSdkVersion用于指定项目的编译版本。这里指定成29,表示使用Android 9.0系统的SDK编译。
  • buildToolsVersion用于指定项目构建工具的版本。

然后后面在android闭包中又嵌套了一个defaultConfig闭包,其可以对项目的更多细节进行配置。

  • applicationId 用于指定项目的包名。
  • minSdkVersion用于指定项目最低兼容的Android系统版本,这里指定15表示最低兼容到Android 4.0系统。
  • targetSdkVersion指定的值用于控制项目是否启用一些高版本的功能特性。比如Android 6.0系统可以查看图片,那么当你把这个数值写成23或者更高,系统就会为项目启用查看图片功能。但如果指定成22,那么你这个项目自然就不可以使用系统的新功能特性。
  • versionCode用于指定项目的版本号。
  • versionName用于指定项目的版本名。

下面来看buildTypes闭包。
buildTypes闭包用于指定生成安装文件的相关配置,通常只会有两个子闭包,一个是debug,一个是release。

  • debug闭包用于指定生成测试版安装文件的配置。可忽略不写。
  • release闭包用于指定正式版安装文件的配置。

下面是release闭包。

  • minifyEnabled用于指定是否对项目代码进行混淆,true表示混淆,false表示不混淆。
  • proguardFiles用于指定混淆时使用的规则文件。这里引用了两个文件,前者在Android SDK目录下,里面是所有项目通用的混淆规则。第二个是在当前目录的根目录下,可以编写当前目录特有的混淆规则。
    在这里插入图片描述

后面是dependencies闭包。它可以指定当前项目所有的依赖关系。
通常Android Studio项目一共有3种依赖方式:本地依赖、库依赖、远程依赖

  • 本地依赖可以对本地的Jar包或目录添加依赖关系。
  • 库依赖可以对项目中的库模块添加依赖关系。
  • 远程依赖则可以对jcenter库上的开源项目添加依赖关系。

这里第一行代码上的描述与实际项目不符,先留疑问。

日志工具的使用

在这里插入图片描述

  • Log.v()
  • Log.d()
  • Log.i()
  • Log.w()
  • Log.e()

分别打印不同等级的调试信息。

在方法外,logt+TAB可以创建一个TAG常量,方法内,log?+TAB可以自动补全日志打印方法,且默认参数是TAG。

很有说法,以后尝试使用?

第一章的内容到此,还是学到了很多东西的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值