前一小节我们介绍了如何创建代码和资源,本节课程我们学习如何通过 Android Studio 来访问和使用 Google 提供的优质 Android 代码示例。
这个闭包主要是配置我们打包的一些信息,包括包名,版本号,版本名称,混淆配置,签名信息等。下面我们详细介绍下:compileSdkVersion: 设置编译时的 Android 版本。buildToolsVersion: 设置编译时构建工具的版本。3.2.1 defaultConfig{}闭包:这个闭包里主要是设置包的一些基本信息,如包名,版本号等。applicationId: 设置打包后的 APK 的包名。minSdkVersion: 设置 apk 最低的支持 Android 版本,如果手机的 Android 系统版本低于这个值,app 一般无法安装。targetSdkVersion: 设置项目的目标版本,表示应用程序在该版本上已经做过充分的测试,系统会为该应用启动一些对应该目标系统的最新功能特性。Tips: Android系统的行为变更,只有 targetSdkVersion 的值设置为大于或等于该手机系统的 API 版本时,才会生效。例如,设置 targetSdkVersion 为 28,对应为 Android 系统版本为 9.0,在 Android 10.0(对应 targetSdkVersion 为 29)系统的手机上,Android 10.0 拥有的新特性[如外存中私有目录权限变更等功能]就不会被启用。versionCode: 设置 APK 包的版本号,一般情况每次打包都要 +1,否则会无法覆盖安装。versionName: 表示版本名称,展示在 APP 的关于里面或是应用市场上。testInstrumentationRunner: 设置单元测试,android.support.test.runner.AndroidJUnitRunner表明是要使用AndroidJUnitRunner进行单元测试。3.2.2 buildTypes{}闭包:这个闭包主要是配置我们打包的,一般包含两个闭包release和debug分别对应的是打Release包还是Debug包。所谓Debug包就是我们直接运行的包,这个包的配置新建项目时是省略没有写的。 buildTypes { release {// 生产包配置 minifyEnabled true//是否混淆 shrinkResources true//是否启用未使用资源的收缩 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//指定混淆的规则文件 signingConfig signingConfigs.release//设置签名信息 zipAlignEnabled true//是否对APK包执行ZIP对齐优化,减小zip体积 renderscriptOptimLevel 5 //指定RenderScript的编译优化等级,一般设置为3 } debug {// 开发配置 minifyEnabled false//是否混淆 shrinkResources false//是否启用未使用资源的收缩 signingConfig signingConfigs.release//设置签名信息 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//指定混淆的规则文件 zipAlignEnabled true//是否对APK包执行ZIP对齐优化,减小zip体积 renderscriptOptimLevel 5 } }从上面的代码中我们可以看到release和debug的配置基本差不多。关于每个字段的具体的意义上面注释中有写,下面就不多做说明了。我们下面主要看下signingConfig这个字段,这个是设置 APP 的签名信息的。 //签名 signingConfigs { //你自己的keystore信息 releaseConfig { storeFile file(rootProject.ext.store_file) storePassword rootProject.ext.store_password keyAlias rootProject.ext.key_alias keyPassword rootProject.ext.key_password v1SigningEnabled true v2SigningEnabled true } }Tips: 签名信息设置signingConfig闭包是在最外层的,也就是和buildTypes闭包是在同一层级的。千万不要把它放在buildTypes闭包里面。3.2.3 dependencies 闭包这个闭包是项目运行所需要的依赖。如我们需要引用的本地 libs 目录下的第三方的 jar 包或是 aar 包,还可以是 maven 库里面的第三方的开源库 [如 support-v4 support-v7 包等]。Tips: 这里我们要和最外层的build.gradle文件的dependencies闭包区分开来。这里的 dependencies 闭包是配置项目运行时引入的第三方库。而最晚层的文件中的 dependencies 闭包是配置构建项目时的 Gradle 的版本。
通过前面同类开发工具的对比,我们为什么更推介使用 Android Studio 呢?因为它不仅集成了强大的代码编辑器、开发者工具,还提供更多可提高 Android 应用开发效率的功能,例如:基于 Gradle 的灵活编译系统;快速且功能丰富的模拟器;统一的环境(供你开发适用于所有 Android 设备的应用);代码模板和 GitHub 集成,可协助你打造常见的应用功能及导入示例代码;大量的测试工具和框架;Lint 工具,能够找出性能、易用性和版本兼容性等方面的问题;C++ 和 NDK 支持。
Android 从系统架构上可分为四层结构,自下而上分别是:Linux 内核系统运行库应用程序框架应用程序
Android Studio 提供了诸多向导和模板,可用于验证系统要求和配置默认设置。本节课程主要介绍可能需要使用的其他配置设置,以便我们自定义对 Android Studio 的使用方式。比如配置文件有哪些,各自作用是什么?如何修改虚拟机参数选项?如何配置配置 JDK 版本?如何配置代理?如何优化配置等。
打开 AndroidStudio 创建一个 Android Project,并且勾选语言为 Kotlin (默认勾选):创建完毕后,会自动加载 Kotlin Gradle Plugin 和 Kotlin 标准库的依赖,可以看到默认 Kotlin 创建 MainActivity 比 Java 看起来都简洁多了。此外 Kotlin Android Project 会默认加载一些 Kotlin 依赖,可以省去自定义配置,帮助更高效开发 Android 应用,下面是默认依赖配置:
若从命令行或在未安装 Android Studio 的计算机上运行 Android 插件,则应在 Gradle 编译文件中设置 Android Plugin for Gradle 代理设置。对于特定于应用的 HTTP 代理设置,请根据各应用模块的要求在 build.gradle 文件中设置代理设置。apply plugin: 'com.android.application'android { ... defaultConfig { ... systemProp.http.proxyHost=proxy.company.com systemProp.http.proxyPort=443 systemProp.http.proxyUser=userid systemProp.http.proxyPassword=password systemProp.http.auth.ntlm.domain=domain } ...}对于整个项目的 HTTP 代理设置,请在 gradle/gradle.properties 文件中设置代理设置。Project-wide Gradle settings....systemProp.http.proxyHost=proxy.company.comsystemProp.http.proxyPort=443systemProp.http.proxyUser=usernamesystemProp.http.proxyPassword=passwordsystemProp.http.auth.ntlm.domain=domainsystemProp.https.proxyHost=proxy.company.comsystemProp.https.proxyPort=443systemProp.https.proxyUser=usernamesystemProp.https.proxyPassword=passwordsystemProp.https.auth.ntlm.domain=domain...```
在前一小节中,我们创建了第一个应用,用到了 Android 模拟器来运行应用。本节课程就详细介绍下如何安装模拟器组件,如何创建和管理虚拟设备。Android 模拟器可在计算机上模拟 Android 设备,这样我们就可以在各种设备上以及各个 Android API 级别测试我们的应用,而无需拥有每个物理设备。模拟器几乎可以提供真正的 Android 设备所具备的所有功能。我们可以模拟来电和短信、指定设备的位置、模拟不同的网速、模拟旋转及其他硬件传感器、访问 Google Play 商店,等等。
从本小节开始我们将介绍 Android SDK 中包含的众多命令行工具,包括 SDK 工具、构建工具、平台工具、模拟器工具、分析工具。本小节我们学习 SDK 工具。
好了,到这里要恭喜你正式进入 Android 基础的学习,在后面的章节会陆续出现很多 Android 原生 API,在学习之前向大家推荐 Google 官方文档,里面有很全的 API 功能描述、使用说明及使用示例。当然,如果英文原版大家上不去,可以访问中文站点:Google官方中文文档,英语盲不要高兴的太早,说是中文文档,但其实内容几乎都是直接 copy 的英文。不过还是建议大家在学习过程中多多查阅官方文档。基础知识将从 Android UI(User Interface)开始,因为 UI 是用户最直接感知到的,也是一个应用展示强大功能的窗口。那么学习 UI,就不得不先提到 View 和 ViewGroup,它俩是 Android 一切 UI 的根基,所以的窗口布局都依赖它们完成,让我们一起看看 View 和 Viewgroup 是何许人也。
从 Android 1.5 开始,Google 发型每一个 Android 版本都用一个甜品的名称作为代号,而代号首字母是从 C 开始以此按照字母顺序排列,而直到 19 年发布的 Android Q 开始,Google 弃用了这一传统,改名为 Android 10。名称版本号API等级发布时间BuildVersionQ10.0292019-09BuildVersionCodes.QPie9.0282018-08BuildVersionCodes.POreo8.1272017-12BuildVersionCodes.OMr1Oreo8.0262017-08BuildVersionCodes.ONougat7.1252016-12BuildVersionCodes.NMr1Nougat7.0242016-08BuildVersionCodes.NMarshmallow6.0232015-08BuildVersionCodes.MLollipop5.1222015-03BuildVersionCodes.LollipopMr1Lollipop5.0212014-11BuildVersionCodes.LollipopKitkat Watch4.4W202014-06BuildVersionCodes.KitKatWatchKitkat4.4192013-10BuildVersionCodes.KitKatJelly Bean4.3182013-07BuildVersionCodes.JellyBeanMr2Jelly Bean4.2-4.2.2172012-11BuildVersionCodes.JellyBeanMr1Jelly Bean4.1-4.1.1162012-06BuildVersionCodes.JellyBeanIce Cream Sandwich4.0.3-4.0.4152011-12BuildVersionCodes.IceCreamSandwichMr1Ice Cream Sandwich4.0-4.0.2142011-10BuildVersionCodes.IceCreamSandwichHoneycomb3.2132011-06BuildVersionCodes.HoneyCombMr2Honeycomb3.1.x122011-05BuildVersionCodes.HoneyCombMr1Honeycomb3.0.x112011-02BuildVersionCodes.HoneyCombGingerbread2.3.3-2.3.4102011-02BuildVersionCodes.GingerBreadMr1Gingerbread2.3-2.3.292010-11BuildVersionCodes.GingerBreadFroyo2.2.x82010-06BuildVersionCodes.FroyoEclair2.1.x72010-01BuildVersionCodes.EclairMr1Eclair2.0.162009-12BuildVersionCodes.Eclair01Eclair2.052009-11BuildVersionCodes.EclairDonut1.642009-09BuildVersionCodes.DonutCupcake1.532009-05BuildVersionCodes.CupcakeBase1.122009-02BuildVersionCodes.Base11Base1.012008-10BuildVersionCodes.Base
Android Studio 安装完毕后我们就可以运行编辑器了。Android Studio 运行后的主窗口界面如下图:Android Studio 主窗口由6个逻辑区域组成。工具栏供我们执行各种操作,其中包括运行应用和启动 Android 工具;导航栏帮助我们在项目中导航,以及打开文件进行修改。此区域提供 Project 窗口中所示结构的精简视图;编辑器窗口帮助我们创建和修改代码。编辑器可能因当前文件类型而异。例如,查看布局文件时,该编辑器会显示布局编辑器;工具窗口栏在 IDE 窗口外部运行,并包含可用于展开或折叠各个工具窗口的按钮;工具窗口可让我们访问特定任务,例如项目管理、搜索和版本控制等。您可以展开和折叠这些窗口;状态栏显示项目和 IDE 本身的状态以及任何警告或消息。
本节课程主要给大家介绍下 Android Studio 开发应用的基本流程及带领大家创建一个最简单的应用实例。
本节课程主要给大家整理介绍下 Android Studio 中的键盘快捷键,熟练掌握使用键盘快捷键才能在开发过程中事半功倍。
作为忠实的 Android 系统用户,你应该会经常用到各种手势:点击、长按、双击、缩放、滑动、拖拽、返回等等,可以说丰富的手势可以让用户更加简洁方便的使用 App,甚至直接影响到 App 的使用体验。这些手势都是系统为我们提供的操作方式,今天来一起看看如何捕捉用户的手势输入。
谷歌 Android 系统
Android Studio 主要的特色功能包括智能代码编辑器、布局编辑器、性能分析器、APK分析器、模拟器。
1. 首先打开 Android Studio,在欢迎页面点击 Start a new Android Studio project 或者 File | New | New project。2. 然后选择一个定义应用程序,对于第一个 “Hello world” 应用程序,选择仅显示空白屏幕的 Empty Activity,然后点击 Next。3. 然后输入 Project 的 name 以及 Package Name,选择一个项目存储的位置,默认 AndroidStudio 创建的语言是 Kotlin, 如果你需要 Java 可以选择 Java。最后点击finish即可。4. 然后经过上述步骤一个 Android 项目就创建完毕了,创建好的项目结构如下:5. 注意: 如果项目提示没有配置 Kotlin,可以在项目的 build.gradle 和 app 中的 build.gradle 中手动配置 Kotlin 或者根据 IDE 的提示自动配置 Kotlin。在整个项目 build.gradle 配置 Kotlin 的 gradle 插件:在 app 中的 build.gradle 配置 Kotlin 的 plugin 和依赖:6. 然后,就可以构建和运行 Android 应用程序,在 Android Studio 中构建和运行 Kotlin 应用程序的过程与 Java 完全相同。点击工具栏上的 Run 运行预定义的 app 配置即可。
前一小节我们介绍了如何通过 lint 来检查我们的代码,本小结我们学习如何使用 Android Studio 布局编辑器,布局编辑器可以帮助我们完成界面上视图的创建、编辑、预览等。
在上一章,我们创建了自己的 Android 工程,并成功的在模拟器中运行起来。同时提到,工程目录中有一个 bin 目录,运行之后我们可以在此目录下找到我们的 apk。那么不难想到,我们在点“Run”之后,系统会编译我们的代码,并结合配置文件打出一个 apk。众所周知 apk 是 Android 系统的安装包,在我们编写完代码,打包成 apk 之后,就可以将 apk 发布到应用市场,用户下载 apk 后就可以安装运行了。这一切看似简单但暗藏玄机,我们的 apk 一旦到了纷繁复杂的市场,就需要考虑很多问题。比如如何将你发布的应用和其他开发者发布的应用区分开;如何确认用户下载的 apk 就是官方发布的而不是个人开发者;如何安全的完成应用升级等等一系列的问题。这些问题有些涉及商业,有些涉及系统安全,对于市场稳定性而言都是至关重要的,解决这些问题的,就是本章主角:Android 程序签名打包。大家可能对这个技术比较陌生,接下来我们从 what、why、how 这三个角度让大家对签名打包有一个清晰的认识。
前一小节我们介绍了如何查找优质的 Android 代码示例,本小结我们学习如何通过 lint 来检查我们的代码,如何发现代码中存在的问题,保证应用能高效稳定的运行。
在 Android Studio 中手动运行 lint 检查,请按如下步骤:在 Android 视图中,打开我们的项目,然后选择要分析的项目、文件夹或文件;从菜单栏中,依次选择 Analyze > Inspect Code;在 Specify Inspection Scope 对话框中,查看设置:在 Inspection profile 下,保留默认配置文件 (Project Default);点击 OK 以运行检查。通过运行 Inspect Code 所生成的 lint 及其他 IDE 检查结果如下图:在左侧窗格树状视图中,通过展开并选择错误类别、类型和问题来查看检查结果;在右侧窗格显示选定错误类别、类型或问题的检查报告,并提供错误的名称和位置。在适用情况下,检查报告会显示问题概要等其他信息,以帮助我们更正问题;在左侧窗格树状视图中,右键点击某个类别、类型或问题,以显示上下文菜单。根据上下文,我们可以执行以下全部或部分操作:跳到源代码、排除和包含选定项、抑制问题、修改设置、管理检查警报和重新运行检查。
在学习了 ScrollView 及 Adapter 两节内容之后,大家应该对 ListView 有了一些基本的了解,它是一个列表样式的 ViewGroup,将若干 item 按行排列。ListView 是一个很基本的控件也是 Android 中最重要的控件之一。它可以帮助我们完成多个 View 的垂直排列并支持滚动显示效果,而它比 ScrollView 更灵活也更易扩展,Adapter 作为 UI 控件和数据源之间的桥梁,会帮我们实现 MVC 模式,所以在实际开发中大多数的列表场景我们会优先考虑使用 ListView 来实现(目前 Google 推出了新的更强大的列表控件——RecyclerView,不过基本原理和 ListView 类似)。
在 Android 模拟器中,我们可以使用 Extended controls 窗口中的 Bug report 功能:点击模拟器面板中的 More 图标;在 Extended controls 窗口中,选择左侧的 Bug report;此时系统会打开一个屏幕,我们可以在其中查看错误报告详细信息,例如屏幕截图、AVD 配置信息和错误报告日志。我们还可以输入一条包含复制步骤的消息,以便与报告一起保存。等待错误报告完成收集,然后点击 Save Report。
从手动检查更新的弹出框中我们可以看到这样的描述 “The latest stable release”,为什么要说是 stable release 呢?因为 Android Studio 存在不同的发布版本,各版本之间有什么区别呢?
在 Android 应用开发方面使用广泛度比较高的应该是下满这 3 款集成开发环境 ( IDE )。
如果你对数据库并不是很熟悉或者不想用 SQL 来操作数据库,同样可以采用纯 Java 接口来操作。在 Android 中数据库的内容用 ContentValues 表示,所以我们的增删改查其实都是对某个 ContentValues 进行操作。
使用 Kotlin 实现 Android 中自定义圆形或圆角图片,需要支持以下功能:支持图片圆形的定制化;支持图片圆角以及每个角的X,Y方向值的定制化;支持形状边框宽度颜色的定制化;支持图片圆角或者圆形右上角消息圆点定制化(一般用于圆形或者圆角头像)。
我们下面来具体看下 Android 项目中我们怎么来实施组件化。我们知道我们发布市场肯定是要打一个全功能的 apk 包,也就是发布市场时是需要集成化的打包模式,而我们开发过程中是需要组件化模式的,所以我们需要一个开关来控制组件化和集成化打包模式。我们各个模块都会有编译工具版本,SDK 的版本,support 库的版本号等。我们可以将这些抽离出来,单独建立一个 Gradle 文件来配置这些全局变量。
Android 虚拟设备 (AVD) 是一种配置,用于定义在 Android 模拟器中模拟的 Android 手机、平板电脑、Wear OS、Android TV 或 Android Automotive OS 设备的特性。虚拟设备的创建和管理等都通过 AVD Manager 来操作。