本文摘自人民邮电出版社异步社区《爱上Android》
html
工欲善其事,必先利其器。选择一个好的IDE能够大幅提升开发效率,节省下的时间能够去多学习新知识,多陪陪家人。接下来就手把手领着你们把开发环境搭建起来。java
以前开发Android通常用Eclipse+ADT插件,可是Google已经中止维护ADT了,本书郑重地建议你们,不要用Eclipse开发了,改用Android Studio开发。android
固然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。 git
在Windows操做系统中右键单击个人电脑→属性就能够查看当前系统的位数。程序员
JDK下载方式很是简单,直接用百度搜索JDK的下载网站,下载下来直接打开,一直点击下一步按钮就能够安装成功。github
上面都不是重点,你们若是有Java基础,这些应该都会了;若是没有Java基础,最好先了解一下Java,接下来就进入重点,了解一下Android Studio。sql
Android Studio是一个基于IntelliJIDEA的新的Android开发环境。与Eclipse ADT插件类似,Android Studio提供了集成的Android开发工具,用于开发和调试。数据库
Android Studio于2013年5月16日在谷歌I/O大会正式对外发布,Google但愿Android Studio能让应用开发更简单、高效。编程
Windows、Mac OS X、Linux三大平台所有支持。api
2015年年末,Google开发者大会期间推出了Android Studio 2.0,让Android Studio编译和运行速度提升了50倍。
Android Studio 2.2完美兼容了NDK开发,能够彻底摆脱ADT。
缘由一:Android Studio是谷歌开发的,专门为Android开发量身定作的编辑器。
缘由二:Android Studio最核心的功能就是智能代码编辑器,它能帮助咱们很是高效地完成代码补全、重构和代码分析。作过开发的读者都知道,没有代码提示,估计 90%以上的人就不会写代码了。
缘由三:Android Studio的速度更快、更加智能,集成了版本控制系统、代码分析工具、UI编辑器、Gradle构建工具、Android Monitor、模拟器、各类模板和示例等,还有各类强大的插件支持。
缘由四:谷歌宣布将在2015年年末前中止对Eclipse Android开发工具的一切支持,包括ADT插件、Ant构建系统、DDMS、Traceview与其余性能和监控工具。
有了上面这四大缘由,你还有什么理由不用Android Studio?
如今的电脑配置愈来愈高,图 2-1 所列的配置要求基本上很容易就能达到了。若是你的电脑配置不知足这些要求,就需换台电脑了。
▲图2-1 须要知足的基本系统要求
官方下载地址:
官网:developer.android.com/sdk/index.h…
中文官网:developer.android.google.cn/studio/inde…
官网打开样式如图2-2所示,这里提供了三大平台的安装包,选择对应的平台进行下载。
▲图2-2 Android Studio
采用官方连接,能够直接下载所有安装包,里面主要包含Android Studio安装包和Android开发SDK(开发工具包)。固然也能够分开下载。
首先须要下载JDK,安装完成JDK,配置JDK环境变量。下面以Windows平台为例进行演示。
右键单击个人电脑→属性→环境变量,配置JAVA_HOME环境变量。
参考如图2-3和图2-4所示的内容。
▲图2-3 配置环境变量
安装过程当中的简单操做在这就不进行截图讲解了,由于只须要点击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
若是一些选项不能点击,说明JDK或者Android SDK目录指向有问题,请看下面的设置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目录里的...\sdk\platform-tools这个路径加入到PATH环境变量中,如图2-19所示,方便在命令提示符中使用ADB指令。
▲图2-19 配置环境变量,图中为Windows 10系统
安装好了开发环境,终于能够建立Android项目了。这但是你成为高手的第一步。接下来介绍建立项目的步骤和出现错误时的解决方法。
前期部分章节赠送教学视频。视频主要为了新手更方便熟悉基本操做。
![]()
2.3节、2.4节、2.5节、2.6节对应的视频地址为:v.youku.com/v_show/id_X… MzA0MA==.html(建议改为超清模式观看)。
步骤 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 项目生成中
第一次建立项目的时候可能会发生些错误。错误的缘由最多的就是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-29所示。
▲图2-29 界面预览
Gradle同步按钮为,当咱们修改工程中后缀名为Gradle的文件时,须要点击此按钮才能生效。
Gradle同步按钮右侧的是工程配置按钮,对工程进行配置须要点击它。
图中视图切换按钮的做用是能够根据我的喜爱切换到不一样的视图。经常使用的视图为Project和Android,如图2-30所示。
▲图2-30 视图切换按钮
点击菜单File→Setting进入设置界面,能够根据本身的偏好进行一些设置。若是喜欢系统默认的设置,此节能够跳过。
备注:Mac版本的Android Studio看不到此按钮,可经过点击顶部菜单Android Studio→Preferences调出来,下面你们自行转换。
默认的Android Studio为灰白色界面,能够选择使用炫酷的黑色界面,如图2-31所示。
▲图2-31 设置主题
选择Settings→Appearance→Theme进入界面,勾选Darcula主题便可。
如图2-32所示,若是Android Studio界面中的中文显示有问题,或者选择中文目录显示有问题,或者想修改菜单栏的字体,就能够这么设置:
Settings→Appearance,勾选Override default fonts by (not recommended),选择一款支持中文的字体便可。本书使用的是微软雅黑,效果不错。
▲图2-32 设置字体
如图2-33所示,此部分会修改编辑器的字体,包含全部的文件显示的字体。
▲图2-33 设置编程字体
选择Settings→Editor→Colors & Fonts→Font。默认系统显示的Scheme为Defualt,此处是不能编辑的,须要点击右侧的Save As...,保存一份本身的设置,并在当中设置。以后,在Editor Font中便可设置字体。
Show only monospaced fonts表示只显示等宽字体。通常来讲,等宽字体在编程中使用较多,且效果较好。
在Settings→Editor→Colors & Fonts中还能够设置字体的颜色,根据要设置的对象选择设置,也能够从网络上下载字体颜色设置包,导入到系统中。
若是想设置代码格式化时显示的样式,就能够这么设置:
Settings→Code Style。一样的,Scheme中默认的配置没法修改,须要建立一份本身的配置。
不管是我的开发,仍是项目组团队开发,都须要统一文件编码。出于字符兼容的问题,建议使用UTF-8。大部分Windows系统默认的字符编码为GBK。
选择Settings→File Encodings。建议将IDE Encoding、Project Encoding、Properties Fiels都设置成统一的编码,如图2-34所示。
▲图2-34 设置文件编码格式
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-37所示,为了方便你们开发,推荐你们设置编辑区域和显示行号。
▲图2-37 其余设置
代码在编辑区域中部会有一条竖线。这条线是用以提醒程序员,一行的代码长度最好不要超过这条线。若是不想显示这条线,能够这么设置:
Settings→Editor→General→Appearance,取消勾选Show right margin (configured in Code Style options)。
选择Settings→Editor→General→Appearance,勾选Show line numbers。
下面以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:查看最近打开过的文件。
熟悉了Android Studio开发环境,接下来介绍你们比较关心的问题。进行Android开发时,固然须要熟悉Android工程目录结构,主要须要了解Android目录结构和Gradle文件的内容结构。
![]()
本节对应的视频地址为:v.youku.com/v_show/id_X…
如图2-38所示,首先须要切换成Project视图,而后整个项目结构就在咱们眼前了。
咱们重点介绍使用的Android项目结构如图2-39所示。
▲图2-38 项目结构
▲图2-39 项目结构,框中的常用
注意,res目录下的全部文件不容许出现大写字母,也不容许使用Java关键字命名。
Android Studio经过Gradle脚本进行打包运行程序。
Gradle 全部文件结构
Android工程目录下有一个build.gradle,运行的module里也有一个build.gradle。
settings.gradle
settings.gradle表示当前运行的程序是app,若是还须要在工程中添加其余运行的程序,就须要在settings.gradle中进行配置。
build.gradle
build.gradle中设置了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'
}复制代码
下面分别进行解释。
这个不能删。它的做用就是让其他的脚本代码都有用。
apply plugin: 'com.android.application'//应用Android应用插件复制代码
代表编译的版本和编译工具的版本。必须保证SDK(开发工具包,立刻就会介绍到)有这个版本。
compileSdkVersion 25 //编译SDK(Software Development Kit)的版本
buildToolsVersion "25.0.2" //构建工具的版本复制代码
其包括applicationId(程序的包名,也就是程序的惟一标示)、兼容的最低版本(minSdkVersion)和目标版本(targetSdkVersion)。这些都在建立项目的时候指定了,能够在这个位置修改。还有当前程序的版本号(versionCode)和版本名字(versionName),其中版本号是整数,随着项目的升级递增,版本名字是字符串,并无太严格的限制。
defaultConfig {
applicationId "com.baidu.myapplication" //应用的惟一标示
minSdkVersion 15 //最低兼容的版本
targetSdkVersion 25 //目标版本兼容的版本
versionCode 1 //版本号,数字版本号
versionName "1.0" //字符串版本号
}复制代码
程序在发布的时候能够混淆代码,能够保护代码,不会被其余人轻易破解。
buildTypes { //构建类型
release {
minifyEnabled false //是否混淆代码 false不混淆
// 混淆代码配置文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}复制代码
其实,buildType主要的目的是能够根据不一样的版本设置不一样的参数。进行不一样的配置。开发过程分为调试阶段和正式发布阶段,能够经过buildType在不一样的阶段设置不一样的参数,以下面的代码:
debug {
buildConfigField "String", "API_URL", "\"test.baidu.com\""
buildConfigField "boolean", "LOG_CALLS", "true"
resValue "string", "str_name", "Example DEBUG"
}
release {
buildConfigField "String", "API_URL", "\"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;复制代码
这个用来指明项目中依赖的函数库,目前项目建立默认须要依赖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'
}复制代码
![]()
本节对应的视频地址为:v.youku.com/v_show/id_X…
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。
了解了这么多,其实你们最关心的是如何把程序部署到手机中。这样你们就能够拿本身写的手机程序跟朋友炫耀了。
怎么部署到手机呢
点击就能够把程序部署到手机中。
前提是,须要有个Android手机,固然没有手机也没有关系,Google工程师提供了模拟器,能够模拟Android手机环境。
参照图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-46所示,进入手机设置中,进入开发者选项,勾选USB调试。而后用数据线链接上电脑,就能够调试了。固然,第一次部署须要用手机受权容许该电脑调试。
▲图2-46 打开USB调试
备注:Android 4.4以上的手机系统默认是不显示开发者选项这个按钮的,默认须要连续点关于手机页中的版本号。
若是你们不想用真实的手机,也不想用Android原生的模拟器,推荐你们用Genymotion模拟器(见图2-47),这个模拟器的速度很惊人。不过,Genymotion安装起来稍微麻烦,须要先安装Oracle VM VirtualBox,而后安装Genymotion,最后注册Genymotion帐号,再下载模拟器。注册和下载都须要访问境外服务器,很是不稳定。本书提早给你们整理好了Windows版的Oracle VM VirtualBox和Genymotion的安装包,也给你们提供了部分虚拟机,你们能够直接双击虚拟机导入Oracle VM VirtualBox中。
▲图2-47 Genymotion模拟器
备注:Win10操做系统中,Oracle VM VirtualBox和Genymotion须要用Win8/Win7兼容性,以管理员身份运行。
了解了如何调式程序,接下来分析项目是如何运行起来的。首先来看app/src/main/AndroidManifest.xml
这个文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="schemas.android.com/apk/res/and…"
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="schemas.android.com/apk/res/and…"
xmlns:tools="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方法,加载布局显示到手机中,大功告成。
开发任何程序时,有两点是万万不能少的:一是注释,二是日志的输出。学习Android开发以前首先须要掌握这两点。下面来介绍注释的使用和日志的输出。
本节对应的视频地址为:v.youku.com/v_show/id_X…
大部分Android程序都采用Java代码,代码中的注释和Java代码是同样的。XML文件注释采用<!---->进行注释,以下:
<!--XML文件注释-->
// java 行注释
/
注释 /
/*
文档注释 /复制代码
好的注释会让你维护程序事半功倍。你们在学习的阶段必定养成先写注释再写代码的习惯。
注释写法相对比较简单,重点看一下在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-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 修改日志颜色
对应的颜色值:
在实际开发的过程当中,咱们会常常看到程序输出的日志,其中不少并非咱们主动输出的。这些日志就像咱们去医院化验的结果单子同样。若是发现警告或者以上级别的日志,就须要留意了,你的程序有潜在风险或者严重问题,须要根据日志内容进行修复。
▲图2-52 修改日志颜色
输出日志很简单,怎么控制日志的输出就值得研究下了,日志是用来调试程序的,当程序发布后日志就变得一无可取了。因此输出日志的原则就是:
程序开发阶段容许输出日志,发布后不容许打印日志。
如何去控制呢?若是在上线前手动删除全部日志,这个工做量就很大了。
方法 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的官方解释就是,混淆器将删除这些方法(若是在程序中使用这些方法的返回值,则不会删除。通常日志不关心返回值)。这样,程序在发布阶段将会混淆代码,混淆的过程当中就把日志输出的方法给去掉了,程序就永远不会输出日志了。
可使用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开发的前期准备工做都作完了,包括环境搭建、熟悉环境、建立项目的步骤、项目结构、调试程序、日志输出等。这一章相对麻烦,不少内容大部分人都不会想作第二遍了,固然也没有必要作第二遍,好比环境搭建(我写这一节的时候也很痛苦)。不过仍是有一些重点须要掌握的,好比日志的输出。
本章代码下载地址:github.com/yll2wcf/boo…
若是代码导入困难,读者可参考个人博客中的文章www.jianshu.com/p/0e73ad2ea…
欢迎关注微信公众帐号——于连林,搜索关键字:likeDev。
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。