爱上Android之选择您的开发工具

    xiaoxiao2022-06-08  211

    本文摘自人民邮电出版社异步社区《爱上Android》 京东地址:https://item.jd.com/12144527.html试读地址:http://www.epubit.com.cn/book/details/4885

    第2章 选择您的开发工具

    工欲善其事,必先利其器。选择一个好的IDE可以大幅提高开发效率,节省下的时间可以去多学习新知识,多陪陪家人。接下来就手把手领着大家把开发环境搭建起来。

    2.1 准备软件,认识Android Studio

    之前开发Android一般用Eclipse+ADT插件,但是Google已经停止维护ADT了,本书郑重地建议大家,不要用Eclipse开发了,改用Android Studio开发。

    当然Android程序大部分是使用Java语言开发的,所以安装Java环境是必须的,需要大家下载JDK,目前最新版本是JDK 8。需要注意的是,大家必须准备JDK 7以上的版本(如果使用的是Android Studio 2.1以上的版本,必须准备JDK 8以上),否则达不到Android Studio的安装要求,建议准备JDK 8(可以使用lambda语法)。如果是64位操作系统,建议安装64位的JDK;如果是32位操作系统,只能安装32位的JDK。

    在Windows操作系统中右键单击我的电脑→属性就可以查看当前系统的位数。

    JDK下载方式非常简单,直接用百度搜索JDK的下载网站,下载下来直接打开,一直点击下一步按钮就可以安装成功。

    上面都不是重点,大家如果有Java基础,这些应该都会了;如果没有Java基础,最好先了解一下Java,接下来就进入重点,了解一下Android Studio。

    2.1.1 什么是Android Studio

    Android Studio是一个基于IntelliJIDEA的新的Android开发环境。与Eclipse ADT插件相似,Android Studio提供了集成的Android开发工具,用于开发和调试。

    Android Studio于2013年5月16日在谷歌I/O大会正式对外发布,Google希望Android Studio能让应用开发更简单、高效。

    Windows、Mac OS X、Linux三大平台全部支持。

    2015年年底,Google开发者大会期间推出了Android Studio 2.0,让Android Studio编译和运行速度提高了50倍。

    Android Studio 2.2完美兼容了NDK开发,可以完全摆脱ADT。

    2.1.2 为什么使用Android Studio

    原因一:Android Studio是谷歌开发的,专门为Android开发量身定做的编辑器。

    原因二:Android Studio最核心的功能就是智能代码编辑器,它能帮助我们非常高效地完成代码补全、重构和代码分析。做过开发的读者都知道,没有代码提示,估计 90%以上的人就不会写代码了。

    原因三:Android Studio的速度更快、更加智能,集成了版本控制系统、代码分析工具、UI编辑器、Gradle构建工具、Android Monitor、模拟器、各种模板和示例等,还有各种强大的插件支持。

    原因四:谷歌宣布将在2015年年底前停止对Eclipse Android开发工具的一切支持,包括ADT插件、Ant构建系统、DDMS、Traceview与其他性能和监控工具。

    有了上面这四大原因,你还有什么理由不用Android Studio?

    2.2 安装Android Studio

    2.2.1 安装配置要求

    现在的电脑配置越来越高,图 2-1 所列的配置要求基本上很容易就能达到了。如果你的电脑配置不满足这些要求,就需换台电脑了。

    ▲图2-1 需要满足的基本系统要求

    2.2.2 下载地址

    官方下载地址:

    官网:http://developer.android.com/sdk/index.html。

    中文官网:https://developer.android.google.cn/studio/index.html。

    官网打开样式如图2-2所示,这里提供了三大平台的安装包,选择对应的平台进行下载。

    ▲图2-2 Android Studio

    采用官方链接,可以直接下载全部安装包,里面主要包含Android Studio安装包和Android开发SDK(开发工具包)。当然也可以分开下载。

    2.2.3 安装JDK

    首先需要下载JDK,安装完成JDK,配置JDK环境变量。下面以Windows平台为例进行演示。

    右键单击我的电脑→属性→环境变量,配置JAVA_HOME环境变量。

    参考如图2-3和图2-4所示的内容。

    ▲图2-3 配置环境变量

    2.2.4 安装Android Studio

    安装过程中的简单操作在这就不进行截图讲解了,因为只需要点击Next按钮。

    本文使用“包含SDK”的安装文件进行讲解,其中包含了“不包含SDK(软件开发工具包)的安装文件”的安装步骤。如果使用“不包含SDK的安装文件”进行安装,安装步骤只会比这些步骤少。

    如果使用压缩包安装,直接解压缩就可以用了。本节内容可直接跳过。

    步骤1

    如图2-5所示,第一个选项:Android Studio程序,必选。第二个选项:Android SDK(安卓开发工具包),如果电脑中已经存在Android SDK,可以不勾选。第三个选项和第四个选项都和虚拟机有关系,如果不使用虚拟机或者SDK中的虚拟机,可以不勾选。

    ▲图2-4 配置环境变量

    ▲图2-5 步骤1

    步骤 2

    如图2-6所示,选择Android Studio和Android SDK的安装目录。

    ▲图2-6 步骤2

    步骤 3

    如果在步骤1中勾选了HAXM(也就是第四个选项,HAXM为虚拟机提供加速服务),就会出现这一步。

    需要根据自己机器的内容大小来设置这个值,一般建议默认即可,如图2-7所示。

    ▲图2-7 步骤3

    步骤 4

    如图2-8所示,Android Studio的运行需要VC++环境,Android Studio在安装的过程中会自动安装。这也是为什么建议使用安装包的原因。

    如果电脑中使用杀毒类的软件,就会禁止安装VC++环境,请注意。

    ▲图2-8 步骤4

    步骤 5

    一般不出意外,就会看到如图2-9所示的界面。说明Android Studio已经安装成功了。

    ▲图2-9 步骤5

    接下来是运行Android Studio。

    前提准备工作:安装JDK并配置JDK环境变量。

    请使用传统的JAVA_HOME环境变量名称。很多人会被提醒JVM或者JDK查找失败,几乎都是因为JDK版本或者没有使用JAVA_HOME这个环境变量名称的原因。

    步骤 6

    每一次安装都会显示如图2-10所示的界面,用以选择导入Android Studio的配置文件。

    第一个选项:使用以前版本的配置文件夹。第二个选项:导入某一个目录下的配置文件夹。第三个选项:不导入配置文件夹。

    ▲图2-10 步骤6

    如果以前使用过Android Studio,可以选择到以前的版本。如果是第一次使用,可以选择第三项。

    步骤 7

    这是在检查Android SDK。安装时有时会在这里等上很长时间,很大的原因就是:网络连接有问题。可以通过配置hosts的方式来解决。如果检查需要更新,则会允许安装,如图2-11所示。

    ▲图2-11 步骤7

    如果想跳过这一步,可以进行如下操作。

    在 Android Studio 安装目录下的 bin 目录下,找到 idea.properties 文件,在文件最后追加disable.android.first.run=true。

    步骤 8

    如果看到如图2-12所示的界面,就说明需要更新Android SDK。建议进行更新。

    步骤 9

    如图2-13所示,选择安装更新Android SDK。第一个选项表示全选,第二个表示自定义。

    ▲图2-12 步骤8

    ▲图2-13 步骤9

    步骤 10

    如果步骤9中选择第一个选项,就会显示如图2-14所示的界面。选择Accept,点击Finish进行安装即可。

    ▲图2-14 步骤10

    步骤 11

    如果步骤9中选择第二个选项,就会显示如图2-15所示的界面。需要选择一个安装目录,需要注意的是:这个目录中不能包含空格以及汉字。不建议使用默认的%APPDATA%目录。点击Next后可以看到类似步骤10的页面,选择Accept,点击Finish进行安装。

    ▲图2-15 步骤11

    步骤 12

    当更新完Android SDK,就会看到如图2-16所示的界面。直到这个界面才说明,可以使用Android Studio了。

    ▲图2-16 步骤12

    选项1:创建一个Android Studio项目。选项2:打开一个Android Studio项目。选项3:导入官方样例,会从网络上下载代码。此功能在以前的测试版本中是没有的,建议多看一看官方给的范例。选项4:从版本控制系统中导入代码。支持CVS、SVN、Git、Mercurial,甚至GitHub。选项5:导入非Android Studio项目。比如Eclipse Android项目、IDEA Android项目。如果Eclipse项目使用官方建议导出(即使用Generate Gradle build files的方式导出),建议使用选项2导入。选项6:设置。选项7:帮助文档。

    如果一些选项不能点击,说明JDK或者Android SDK目录指向有问题,请看下面的设置JDK或者Android SDK目录。

    2.2.5 设置JDK和Android SDK目录

    有时运行Android Studio会提醒JDK或者Android SDK不存在,需要重新设置。此时就需要到全局的Project Structure页面下进行设置。进入全局的Project Structure页面方法如下。

    方法 1

    如图2-16所示,选择Configure→ProjectDefaults→Project Structure。

    方法 2

    如图 2-17 所示,进入 Android Studio 开发界面,选择 File→OtherSettings→Default Project Structure。

    ▲图2-17 Android Studio开发界面

    方法1和方法2都会进入Project Structure界面,如图2-18所示,在此页面下设置JDK或者Android SDK目录即可。NDK暂时不需要。

    ▲图2-18 设置SDK和JDK

    建议大家把SDK目录里的...sdkplatform-tools这个路径加入到PATH环境变量中,如图2-19所示,方便在命令提示符中使用ADB指令。

    ▲图2-19 配置环境变量,图中为Windows 10系统

    2.3 项目的创建

    安装好了开发环境,终于可以创建Android项目了。这可是你成为高手的第一步。接下来介绍创建项目的步骤和出现错误时的解决方法。

    前期部分章节赠送教学视频。视频主要为了新手更方便熟悉基本操作。

     

    2.3节、2.4节、2.5节、2.6节对应的视频地址为:http://v.youku.com/v_show/id_XMTM2NTcz MzA0MA==.html(建议改成超清模式观看)。

    2.3.1 创建项目的步骤

    步骤 1  开始创建工程

    如图2-20所示,点击Start a new Android Studio project就可以创建第一个项目了。

    ▲图2-20 步骤一,创建Android项目

    步骤 2  设置基本信息

    如图 2-21 所示,这一步主要设置项目中最基本的信息,包括项目的名字、项目的唯一标示包名和项目存放的地址。需要注意的是,存放工程的目录不要有中文或者空格。添加C++支持暂时忽略。

    ▲图2-21 创建工程

    点击Next进入选择设备界面。

    步骤 3  选择设备

    如图2-22所示,Android系统覆盖面太广了,既可以开发和手机平板电脑,也可以开发手表、电视,甚至汽车眼镜,以后种类还会越来越多。学习阶段都是以手机为主,我们选择手机就可以了。

    ▲图2-22 选择设备

    关于最低兼容的版本,我们选择不同版本的SDK,设备覆盖率会有相应的变化,SDK版本越低,设备覆盖率就越高。如果想支持更多的设备,就不得不选择低版本的SDK。

    点击Next进入选择Activity模板界面。

    步骤 4  选择 Activity 模板

    Activity直接翻译过来是活动的意思。在Android开发中,Activity是用来显示界面的,是传说中Android四大组件之一(四大组件还包括广播接受者、内容提供者、服务)。

    Android Studio为我们提供了常用的Activity模板,可以选择更加快捷的创建。其实这些不同的模板大同小异,里面自动生成了不同的模板代码。在学习阶段,建议大家选择 Empty Activity,这是一个空的界面,我们可以通过自己的双手创建出来不同的界面,如图2-23所示。

    ▲图2-23 选择Activity模板

    点击Next进入设置Activity信息的界面

    步骤 5  设置 Activity 信息

    如图2-24所示,这一步设置Activity和布局的名字。一般Activity的名字都是以Activity为

    ▲图2-24 定制Activity

    后缀结束,表示这个类是Activity的子类,也就是姓Activity(老外习惯姓在后面)。布局文件并不是Java中的类,它是XML文件,其作用就是为了辅助我们开发界面。

    主流的Android开发就是采用Java+XML进行的。

    Backwords Compatibility(AppCompat) 选项一般勾选,勾选创建的 Activity 默认继承AppCompatActivity,为了是兼容Android 5.0以下的低版本Android系统。可以让低版本使用新版本的一些特性。

    点击Finish就完成创建项目了。当然还需要等待一会,如图2-25所示。

    ▲图2-25 项目生成中

    2.3.2 解决错误(没有错误最好)

    第一次创建项目的时候可能会发生些错误。错误的原因最多的就是SDK版本太高或者太低。

    列举几个作者碰到的错误。

    错误 1

    如图2-26所示,这个错误原因是Gradle插件(Android是通过Gradle打包编译的)太旧了。解决办法有两种。

    ▲图2-26 错误1

    (1)旧的不去,新的不来。升级Gradle插件,旧的就不要了。这个需要下载新的,然后进行配置。

    (2)直接用旧的,但需要修改build.gradle文件。这个比较简单,适合比较专一的人。具体修改方法如下。

    如图2-27所示,先找到工程下的build.gradle文件,找到里面的配置,把里面的配置改低点,改成1.2.3或者1.5.0,虽然有些新特性可能用不了,但是足够我们用的了。

    ▲图2-27 修改1

    备注:最新版本已经不是2.0.0-alpha1了,解决方式是通用的。

    错误 2

    如图2-28所示,这个错误指的是工程无法解析对应的函数库。碰到这种情况不要害怕,Android Studio提供了解决方案。点击Install Repository and sync project,然后安装对应的函数库即可。

    ▲图2-28 错误2

    备注:图片只是为了演示错误,新创建工程默认不会加载recycleview-v7这个库,目前新创建工程会加载。

    图中'com.android.support:appcompat-v7:XXXX'(这个位置看不懂没关系,后面会讲到)。

    读者在创建工程时碰到的问题可以反馈给我。我尽量帮你解决,同时我也会把问题的解决方式同步到电子书里。

    2.4 Android Studio界面预览

    创建完了工程,接下来预览开发环境的界面,如图2-29所示。

    ▲图2-29 界面预览

    Gradle同步按钮为,当我们修改工程中后缀名为Gradle的文件时,需要点击此按钮才能生效。

    Gradle同步按钮右侧的是工程配置按钮,对工程进行配置需要点击它。

    图中视图切换按钮的作用是可以根据个人喜好切换到不同的视图。常用的视图为Project和Android,如图2-30所示。

    ▲图2-30 视图切换按钮

    2.5 常用设置

    点击菜单File→Setting进入设置界面,可以根据自己的偏好进行一些设置。如果喜欢系统默认的设置,此节可以跳过。

    备注:Mac版本的Android Studio看不到此按钮,可通过点击顶部菜单Android Studio→Preferences调出来,下面大家自行转换。

    2.5.1 设置主题

    默认的Android Studio为灰白色界面,可以选择使用炫酷的黑色界面,如图2-31所示。

    ▲图2-31 设置主题

    选择Settings→Appearance→Theme进入界面,勾选Darcula主题即可。

    2.5.2 设置字体和格式

    1.设置系统字体

    如图2-32所示,如果Android Studio界面中的中文显示有问题,或者选择中文目录显示有问题,或者想修改菜单栏的字体,就可以这么设置:

    Settings→Appearance,勾选Override default fonts by (not recommended),选择一款支持中文的字体即可。本书使用的是微软雅黑,效果不错。

    ▲图2-32 设置字体

    2.设置编程字体

    如图2-33所示,此部分会修改编辑器的字体,包含所有的文件显示的字体。

    ▲图2-33 设置编程字体

    选择Settings→Editor→Colors & Fonts→Font。默认系统显示的Scheme为Defualt,此处是不能编辑的,需要点击右侧的Save As...,保存一份自己的设置,并在当中设置。之后,在Editor Font中即可设置字体。

    Show only monospaced fonts表示只显示等宽字体。一般来说,等宽字体在编程中使用较多,且效果较好。

    3.设置字体颜色

    在Settings→Editor→Colors & Fonts中还可以设置字体的颜色,根据要设置的对象选择设置,也可以从网络上下载字体颜色设置包,导入到系统中。

    4.设置代码格式

    如果想设置代码格式化时显示的样式,就可以这么设置:

    Settings→Code Style。同样的,Scheme中默认的配置无法修改,需要创建一份自己的配置。

    2.5.3 设置文件编码

    无论是个人开发,还是项目组团队开发,都需要统一文件编码。出于字符兼容的问题,建议使用UTF-8。大部分Windows系统默认的字符编码为GBK。

    选择Settings→File Encodings。建议将IDE Encoding、Project Encoding、Properties Fiels都设置成统一的编码,如图2-34所示。

    ▲图2-34 设置文件编码格式

    2.5.4 设置快捷键

    Android Studio的快捷键和Eclipse(学习过Java的应该都接触过)的不相同,但是通过设置就可以在Android Studio中使用Eclipse的快捷键。

    选择Settings→Keymap。可以从Keymap中选择对应IDE的快捷键,如图2-35所示。

    ▲图2-35 快捷键

    无论是否选择Keymap映射,都需要修改一个快捷键,就是代码提示的快捷键。Android Studio中代码提示的快捷键是Ctrl+Space,这个按键和切换输入法冲突。

    选择Main menu→Code→Completion→Basic,更改为想替换的快捷键组合,推荐为Alt+/,如图2-36所示。

    ▲图2-36 修改快捷键

    2.5.5 其他设置

    如图2-37所示,为了方便大家开发,推荐大家设置编辑区域和显示行号。

    ▲图2-37 其他设置

    1.设置Android Studio编辑区域

    代码在编辑区域中部会有一条竖线。这条线是用以提醒程序员,一行的代码长度最好不要超过这条线。如果不想显示这条线,可以这么设置:

    Settings→Editor→General→Appearance,取消勾选Show right margin (configured in Code Style options)。

    2.显示行号

    选择Settings→Editor→General→Appearance,勾选Show line numbers。

    2.6 常用快捷键

    下面以Windows/Linux电脑为例讲解常用快捷键。Mac电脑的快捷键大部分类似,只需要把Ctrl替换成Cmd,Alt替换成Option。

    默认快捷键如下。

    Ctrl + D:复制光标所在行代码到下一行。

    Ctrl + Y:删除光标所在位置那行代码(Mac电脑为Cmd+Delelte)。

    Alt+Enter:导入包,快速修复。

    Ctrl+/:当行注释,反注释再按一次即可。

    Ctrl+Shift+/:模块注释,反注释再按一次即可。

    Alt+Insert:可以生成构造器/Getter/Setter等。

    Ctrl+Alt+V:生成方法返回值。

    Ctrl+E:查看最近打开过的文件。

    Eclipse映射后区别不大。

    Ctrl+Shift+↓:复制光标所在行代码到下一行。

    Ctrl+D:删除光标所在位置那行代码。

    Alt+Enter:导入包,快速修复。

    Ctrl+/:当行注释,反注释再按一次即可。

    Ctrl+Shift+/:模块注释,反注释再按一次即可。

    Alt+Insert:可以生成构造器/Getter/Setter等。

    Ctrl+Alt+V:生成方法返回值。

    Ctrl+E:查看最近打开过的文件。

    2.7 Android工程目录

    熟悉了Android Studio开发环境,接下来介绍大家比较关心的问题。进行Android开发时,当然需要熟悉Android工程目录结构,主要需要了解Android目录结构和Gradle文件的内容结构。

     

    本节对应的视频地址为:http://v.youku.com/v_show/id_XMTM2NTczOTQwMA==.html(建议改成超清模式观看)。

    2.7.1 工程目录介绍

    如图2-38所示,首先需要切换成Project视图,然后整个项目结构就在我们眼前了。

    我们重点介绍使用的Android项目结构如图2-39所示。

    ▲图2-38 项目结构

    ▲图2-39 项目结构,框中的经常使用

    注意,res目录下的所有文件不允许出现大写字母,也不允许使用Java关键字命名。

    2.7.2 Gradle使用详解

    Android Studio通过Gradle脚本进行打包运行程序。

    Gradle 所有文件结构

    Android工程目录下有一个build.gradle,运行的module里也有一个build.gradle。

    settings.gradle

    settings.gradle表示当前运行的程序是app,如果还需要在工程中添加其他运行的程序,就需要在settings.gradle中进行配置。

    build.gradle

    build.gradle中设置了Gradle的版本、依赖的仓库。

    2.7.3 app/build.gradle

    app/build.gradle文件在开发过程中可能修改的次数比较多。下面我们重点介绍。

    apply plugin: 'com.android.application'//应用Android应用插件android { compileSdkVersion 25 //编译SDK(Software Development Kit)的版本 buildToolsVersion "25.0.2" //构建工具的版本

    defaultConfig {

    applicationId "com.baidu.myapplication" //应用的唯一标示 minSdkVersion 15 //最低兼容的版本 targetSdkVersion 25 //目标版本兼容的版本 versionCode 1 //版本号,数字版本号 versionName "1.0" //字符串版本号 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    } buildTypes { //构建类型

    release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' }

    }} dependencies { // 指明项目中依赖的第三方函数库 compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:25.1.0'}

    下面分别进行解释。

    1.Android脚本

    这个不能删。它的作用就是让其余的脚本代码都有用。

    apply plugin: 'com.android.application'//应用Android应用插件

    2.Android配置

    表明编译的版本和编译工具的版本。必须保证SDK(开发工具包,马上就会介绍到)有这个版本。

    compileSdkVersion 25 //编译SDK(Software Development Kit)的版本buildToolsVersion "25.0.2" //构建工具的版本

    3.运行程序的配置

    其包括applicationId(程序的包名,也就是程序的唯一标示)、兼容的最低版本(minSdkVersion)和目标版本(targetSdkVersion)。这些都在创建项目的时候指定了,可以在这个位置修改。还有当前程序的版本号(versionCode)和版本名字(versionName),其中版本号是整数,随着项目的升级递增,版本名字是字符串,并没有太严格的限制。

    defaultConfig { applicationId "com.baidu.myapplication" //应用的唯一标示 minSdkVersion 15 //最低兼容的版本 targetSdkVersion 25 //目标版本兼容的版本 versionCode 1 //版本号,数字版本号 versionName "1.0" //字符串版本号}

    4.buildTypes

    程序在发布的时候可以混淆代码,可以保护代码,不会被其他人轻易破解。

    buildTypes { //构建类型 release { minifyEnabled false //是否混淆代码 false不混淆 // 混淆代码配置文件 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

    }}

    其实,buildType主要的目的是可以根据不同的版本设置不同的参数。进行不同的配置。开发过程分为调试阶段和正式发布阶段,可以通过buildType在不同的阶段设置不同的参数,如下面的代码:

    debug { buildConfigField "String", "API_URL", ""http://test.baidu.com"" buildConfigField "boolean", "LOG_CALLS", "true" resValue "string", "str_name", "Example DEBUG"}release { buildConfigField "String", "API_URL", ""http://www.baidu.com"" buildConfigField "boolean", "LOG_HTTP_CALLS", "false" resValue "string", "str_name", "Example" ...}

    调试阶段就是debug,正式发布就是release,里面分别设置了不同的3个参数。这3个参数可以通过代码调用:

    String url=BuildConfig.API_URL;boolean log_calls=BuildConfig.LOG_CALLS;int stringid=R.string.str_name;

    5.dependencies

    这个用来指明项目中依赖的函数库,目前项目创建默认需要依赖appcompat-v7(版本不一定和书中一致),里面提供了很多API,既可以使用高版本的特效,也能兼容低版本,何乐而不为呢?

    dependencies { // 指明项目中依赖的第三方函数库 // 依赖程序中jar包 compile fileTree(dir: 'libs', include: ['*.jar']) // 单元测试相关的 testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:25.1.0'}

    2.8 SDK目录介绍

     

    本节对应的视频地址为:http://v.youku.com/v_show/id_XMTM2NTU3MzcwNA==.html(建议改成超清模式观看)。

    1.什么是 SDK

    首先需要明白一个概念,SDK全称是Software Development Kit,翻译过来就是软件开发工具包。它是开发程序必不可少的。在安装Android Studio后必须要安装SDK,否则不能创建项目。如果用官方默认的安装包,默认是安装SDK的。

    2 . SDK 目录(见图 2 - 40 )

    注:Mac系统默认在~/Libary/Android目录下。

    ▲图2-40 SDK目录

    (1)add-ons中保存着附加库,比如GoogleMaps。

    (2)build-tools编译。

    (3)docs中是Android SDKAPI参考文档,所有的API都可以在这里查到。

    (4)extras:额外的jar包之类的。

    (5)platforms是每个平台的SDK真正的文件,里面会根据APILevel划分SDK版本。

    (6)platform-tools保存着一些通用工具,比如adb、aapt、aidl、dx等文件。这里和platforms目录中的tools文件夹有些重复,主要是从Android 2.3开始这些工具被划分为通用了。

    (7)samples是Android SDK自带的默认示例工程,强烈推荐初学者学习里面的apidemos。

    (8)source是Android系统源码。

    (9)tools作为SDK根目录下的tools文件夹,包含了重要的工具,比如ddms用于启动Android调试工具,还有logcat、屏幕截图和文件管理器;draw9patch是绘制Android平台的可缩放png图片的工具;sqlite3可以在PC上操作SQLite数据库;monkeyrunner是一个不错的压力测试应用,模拟用户随机按键;mksdcard是模拟器SD映像的创建工具;emulator是Android SDK模拟器主程序,不过从Android 1.5开始,需要输入合适的参数才能启动模拟器;traceview作为Android平台上重要的调试工具。

    (10)system-images:镜像。

    (11)AVD Manager:模拟器管理者。

    (12)SDK Manager:SDK管理者,可以用它下载升级SDK。

    2.9 调试程序

    了解了这么多,其实大家最关心的是如何把程序部署到手机中。这样大家就可以拿自己写的手机程序跟朋友炫耀了。

    怎么部署到手机呢

    点击就可以把程序部署到手机中。

    前提是,需要有个Android手机,当然没有手机也没有关系,Google工程师提供了模拟器,可以模拟Android手机环境。

    2.9.1 创建模拟器

    参照图2-41和图2-42,首先点击模拟器按钮,然后点击创建模拟器,选择对应的设备。

    ▲图2-41 步骤1创建模拟器

    ▲图2-42 步骤2创建模拟器

    使用默认的设备,点击Next,选择一个系统映像,如图2-43所示。

    ▲图2-43 步骤3选择镜像

    点击Next,进入核对配置界面,如图2-44所示。

    ▲图2-44 步骤4确认配置

    最后点击Finish就创建成功了,如图2-45所示。

    ▲图2-45 创建成功

    点击启动按钮就可以启动模拟器。

    目前新版Android模拟器速度非常快,但是比较耗费内存。

    2.9.2 连接真实手机

    当然,也可以连接自己的真实手机。

    如图2-46所示,进入手机设置中,进入开发者选项,勾选USB调试。然后用数据线连接上电脑,就可以调试了。当然,第一次部署需要用手机授权允许该电脑调试。

    ▲图2-46 打开USB调试

    备注:Android 4.4以上的手机系统默认是不显示开发者选项这个按钮的,默认需要连续点关于手机页中的版本号。

    2.9.3 Genymotion模拟器

    如果大家不想用真实的手机,也不想用Android原生的模拟器,推荐大家用Genymotion模拟器(见图2-47),这个模拟器的速度很惊人。不过,Genymotion安装起来稍微麻烦,需要先安装Oracle VM VirtualBox,然后安装Genymotion,最后注册Genymotion账号,再下载模拟器。注册和下载都需要访问境外服务器,非常不稳定。本书提前给大家整理好了Windows版的Oracle VM VirtualBox和Genymotion的安装包,也给大家提供了部分虚拟机,大家可以直接双击虚拟机导入Oracle VM VirtualBox中。

    ▲图2-47 Genymotion模拟器

    链接:http://pan.baidu.com/s/1i4fXwCt,密码:j3gt。

    备注:Win10操作系统中,Oracle VM VirtualBox和Genymotion需要用Win8/Win7兼容性,以管理员身份运行。

    2.10 程序启动分析

    了解了如何调式程序,接下来分析项目是如何运行起来的。首先来看app/src/main/AndroidManifest.xml这个文件:

    <?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.baidu.myapplication" >

    <application

    android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>

    </application>

    </manifest>

    AndroidManifest.xml文件俗称清单文件,可以简单理解为是当前应用的配置文件。该文件可以配置应用权限和四大组件(包括Activity、广播接受者、服务、内容提供者),Activity必须在清单文件中注册,否则不能直接显示。

    其中,intent-filter里的两行代码非常重要,<action android:name="android.intent.action.MAIN" />和<category android:name="android.intent.category.LAUNCHER" />表示MainActivity是这个项目的主Activity,在手机上点击应用图标,首先启动的就是MainActivity。

    接下来再看MainActivity:

    package com.baidu.myapplication;

    import android.os.Bundle;import android.support.v7.app.AppCompatActivity;

    public class MainActivity extends AppCompatActivity { // 首先启动onCreate方法 @Override protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState); //设置界面显示的布局 setContentView(R.layout.activity_main);

    }}

    首先可以看到,MainActivity继承自AppCompatActivity,这是一个特殊的Activity,也具备Activity的特性。

    当程序运行的时候,首先会根据上面清单文件的配置运行MainActivity,然后就会调用MainActivity的onCreate方法,这个方法率先调用。而MainActivity在这个方法中加载了布局setContentView(R.layout.activity_main);

    这时候可能有人会问:R.layou.activity_main是什么?R又是在哪来的?

    其中,R代表res目录,layout就是res目录下的布局目录。R是自动生成的类,用来连接res目录下的资源和Java代码,这个位置相当于引入了activity_main这个布局文件。如果res目录下有错误,R就不会生成了,代码中就会有错误。

    之前给大家介绍过,凡是在应用中看得到的东西,都是放在Activity中,而这个布局就是当前界面程序显示的样子:

    再来看布局文件src/main/res/layout/activity_main.xml:

    <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.baidu.myapplication.MainActivity"> <!--TextView用来显示文本的控件--> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" />

    </RelativeLayout>

    如图2-48所示,点击Design按钮可以查看预览界面,或者直接运行到手机也可以看到一样的界面。其中,TextView 就是最简单的一个控件,用来显示文本,上面代码中的 android:text 属性就是控制显示的内容。

    ▲图2-48 预览界面

    简单总结下:项目启动首先需要读取清单文件AndroidManifest.xml,然后找到主Activity,调用主Activity的onCreate方法,加载布局显示到手机中,大功告成。

    2.11 日志和注释

    开发任何程序时,有两点是万万不能少的:一是注释,二是日志的输出。学习Android开发之前首先需要掌握这两点。下面来介绍注释的使用和日志的输出。

    本节对应的视频地址为:http://v.youku.com/v_show/id_XMTM2NTczOTk5Mg==.html(建议改成超清模式观看)

    2.11.1 注释

    大部分Android程序都采用Java代码,代码中的注释和Java代码是一样的。XML文件注释采用<!---->进行注释,如下:

    <!--XML文件注释-->

    // java 行注释

    /* 注释*/

    /** 文档注释*/

    好的注释会让你维护程序事半功倍。大家在学习的阶段一定养成先写注释再写代码的习惯。

    2.11.2 日志

    注释写法相对比较简单,重点看一下在Android中如何输日志。首先需要明白日志是给程序员自己看的,使用软件的人一般是看不到的。

    如图2-49所示,可以借助Android Monitor工具查看日志,默认快捷键:Alt+6。

    ▲图2-49 日志

    从上面的图片可以看到,日志具有不同的日志级别,包括:Verbose、Debug、Info、Warn、Error、Assert。以上级别依次升高。每条日志都有进程信息,默认一个应用程序占一个进程。每条日志都有标签。

    磨刀不误砍柴工,学习开发前首先需要了解如何输出日志。

    Android中的日志工具类是Log(android.util.Log),这个类中提供了如下方法来供我们打印日志。

    (1)Log.v()对应级别Verbose。

    (2)Log.d()对应级别Debug。

    (3)Log.i()对应级别Info。

    (4)Log.w()对应级别Warn。

    (5)Log.e()对应级别Error。

    (6)Log.wtf()对应级别Assert。

    当然System.out.println方法也可以输出日志,这个方法在Java中使用的比较多,在Android中并无明显优势,因为它不能控制日志的标签,查询起来比较麻烦。

    直接在onCreate方法中演示这几个方法,Log.XXX()中第一个参数就是日志的标签,推荐大家指定当前的类名,方便查找:

    Log.v("MainActivity","v");Log.d("MainActivity","d");Log.i("MainActivity","info");Log.w("MainActivity","w");Log.e("MainActivity","e");Log.wtf("MainActivity","wtf");System.out.print("out");

    写完代码,运行查看结果,如图2-50所示。

    ▲图2-50 输出结果

    大家发现Syste.out.println的标签是System.out,级别是INFO级别。

    注意,Android Studio每个级别默认的不是这个颜色,默认的颜色太难看,不方便区别级别,我们需要自己改一下。

    2.11.3 设置Android Studio日志显示颜色

    如图2-51和图2-52所示,选择File→Settings或按Ctrl + Alt +S组合键进入设置界面,找到Editor→Colors &Fonts→Android Logcat或在上面的搜索框中输入Logcat点中Verbose、Info、Debug等选项,然后在后面将Use Inberited attributes去掉勾选,再将Foreground前的复选框选上,就可以双击后面的框去选择颜色了,选择Apply→OK。

    ▲图2-51 修改日志颜色

    对应的颜色值:

    VERBOSE BBBBBBDEBUG 0070BBINFO 48BB31WARN BBBB23ERROR FF0006ASSERT 8F0005

    在实际开发的过程中,我们会经常看到程序输出的日志,其中很多并不是我们主动输出的。这些日志就像我们去医院化验的结果单子一样。如果发现警告或者以上级别的日志,就需要留意了,你的程序有潜在风险或者严重问题,需要根据日志内容进行修复。

    ▲图2-52 修改日志颜色

    2.11.4 实际开发中控制日志

    输出日志很简单,怎么控制日志的输出就值得研究下了,日志是用来调试程序的,当程序发布后日志就变得一无是处了。所以输出日志的原则就是:

    程序开发阶段允许输出日志,发布后不允许打印日志。

    如何去控制呢?如果在上线前手动删除所有日志,这个工作量就很大了。

    方法 1 :创建 LogUtils

    可以创建一个LogUtils工具类:

    public class LogUtils {public static final boolean DEBUG=true;

    public static void i(String tag,String msg){

    if(DEBUG) { Log.i(tag, msg); }

    }}

    在程序中都是用Logutils的方法输出日志:

    LogUtils.i("MainActivity","LogUtils");

    这样就可以通过LogUtils中DEBUG变量去控制日志的输出,当程序调试时,把这个值改为true;程序发布了,就把这个值改成false。这样就可以实现我们一开始的需求。

    然而,这样的话,我们还需要在发布前夕手动地去改代码,能不能在发布前不改代码呢?这时候就要借助Gradle了,Android Studio集成了Gradle,这一点非常棒。可以参考之前介绍的内容,打开app/build.gradle这个文件,做一个配置:

    buildTypes { debug{ // 开发阶段 buildConfigField "boolean", "LOG_CALLS", "true" // 定义了boolean变量 true

    } release { // 发布了

    buildConfigField "boolean", "LOG_CALLS", "false" minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

    } }

    可以在buildType中配置一些全局变量,可以是String类型,也可以是boolean,这里用到的就是LOG_CALLS这一个boolean类型变量,注意,debug{ ...}指的是程序开发阶段,release{ }指的是程序发布阶段。我们在开发和发布阶段分别定义了对应不同值的LOG_CALLS,接下来就可以在LogUtils中使用这个全局变量了:

    public class LogUtils {public static final boolean DEBUG=BuildConfig.LOG_CALLS;

    public static void i(String tag,String msg){

    if(DEBUG) { Log.i(tag, msg); }

    }}

    其中,BuildConfig.LOG_CALLS就是我们在上面定义的变量,这个变量在开发阶段是true,发布阶段自动就变成了false。我们这样就干了一个一劳永逸的事了。

    方法 2 :混淆日志类

    上面的方法还是比较麻烦,其实还有更简单的方法。我们可以借助代码混淆。简单地说,代码混淆就是把代码进行混淆加密,让盗取代码的人难以读懂。

    首先开启代码混淆:

    release {minifyEnabled true //是否混淆代码 false不混淆 // 混淆代码配置文件 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}

    混淆的脚本默认是在工程目录下的proguard-rules.pro文件中添加的,添加如下代码:

    -assumenosideeffects class android.util.Log {public static boolean isLoggable(java.lang.String, int);public static int v(...); public static int i(...);public static int w(...);public static int d(...);public static int e(...);}

    assumenosideeffects的官方解释就是,混淆器将删除这些方法(如果在程序中使用这些方法的返回值,则不会删除。一般日志不关心返回值)。这样,程序在发布阶段将会混淆代码,混淆的过程中就把日志输出的方法给去掉了,程序就永远不会输出日志了。

    2.11.5 Logger的使用

    可以使用Logger这个开源框架输出日志,如图2-53所示。首先看看这个日志控制器输出的界面,其排版工整,调理清晰。

    ▲图2-53 使用Logger输出日志

    具体怎么使用呢?大家可以通过上面的Logger连接进入github主页。当然这也是本书第一次介绍开源框架的使用。下面给新手简单介绍下。

    直接访问app/build.gradle文件,额外添加logger的依赖:

    dependencies { // 指明项目中依赖的第三方函数库 ... compile '<strong>com.orhanobut:logger:1.15</strong>'}

    然后单击界面上的同步按钮,如图2-54所示,Android Studio就会自动下载logger1.15这个第三方的库,非常方便。

    ▲图2-54 同步按钮

    使用方法:

    Logger输出的日志方式要多一些,可以输出JSON和XML格式。后面介绍讲网络传输的时候会对这种格式进行具体介绍。

    // 默认标签Logger.d("hello");Logger.e("hello");Logger.w("hello");Logger.v("hello");Logger.wtf("hello");//指定标签Logger.t("mytag").d("hello");

    总结

    这一章,我们把学习Andorid开发的前期准备工作都做完了,包括环境搭建、熟悉环境、创建项目的步骤、项目结构、调试程序、日志输出等。这一章相对麻烦,很多内容大部分人都不会想做第二遍了,当然也没有必要做第二遍,比如环境搭建(我写这一节的时候也很痛苦)。不过还是有一些重点需要掌握的,比如日志的输出。

    本章代码下载地址:https://github.com/yll2wcf/book,项目名称:Chapter2。

    如果代码导入困难,读者可参考我的博客中的文章http://www.jianshu.com/p/0e73ad2ea8b5。

    欢迎关注微信公众账号——于连林,搜索关键字:likeDev。

    合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。

    相关资源:七夕情人节表白HTML源码(两款)

    最新回复(0)