0%

上手Android Studio之一(基本配置)

主要内容包括:Android Studio 的基本配置、常用插件、Gradle构建系统初步、第三方库导入等。

基本配置

配置IDE主题

接上一篇从Android开发环境搭建开始,其实,咱在安装AS的留了个坑,那就是关于主题的配置,如果是默认安装,主题是灰白色的,而咱选了一个暗黑系的Darcula主题。关于主题设置需要打开Settings窗口,操作如下:点击设置图标->Appearance->选择Theme->点击Apply,主题就设置好了。

设置IDE主题

配置代码主题

默认的几个主题咱没办法修改,需要自定义一个主题才行,仍旧是在Settings窗口中,在Editor->Colors& Fonts栏,先选择Darcula然后再点击Save As,在弹出窗口Name文本框里自定义Darcula copy的主题,如下图所示。点击OK在点击Apply后自定义主题就设置好了。

自定义主题

然后就可以配置代码主题了。咱做的配置如下:

  1. 代码字体、大小、间距
    在Editor→Colors& Font→Font栏:选择Scheme为自定义的Darculacopy,选择Primaryfont 字体为Monospaced,选择Size大小为20,选择Line spacing间距为1.0。

  2. 自动导包
    在Editot→General→Auto Import栏:勾上“Optimize imports on the fly”和“Add unambiguous imports on the fly”。

  3. 显示行号
    在Editot→General→Appearance栏,勾上“Show line numbers”。

  4. 代码提示不区分大小写
    在Editor→General→Code Completion,将”Case sensitive completion”设置为None。

配置Logcat颜色

默认AS的logcat只有Error和Assert是红色的。做完配置后如下图所示。

Logcat效果预览

具体操作步骤如下:
在Editor→Colors& Fonts→Android Logcat栏,依次选择Assert、Debug、Error等选项操作,然后将Useinherited attributes 去掉勾选,再双击Foreground后面的颜色框去选择颜色,颜色选择参考如下表所示。最后点击Apply即可。

Log级别 颜色值
VERBOSE BBBBBB
DEBUG 0070BB
INFO 48BB31
WARN BBBB23
ERROR FF0006
ASSERT 8F0005

统一文件编码

统一文件编码为UTF-8。在Editor→File Encodings栏,分别设置IDE Encoding位UTF-8,设置ProjectEncoding为UTF-8,设置properties file的编码为UTF-8,并勾上Transparent native-to-asciiconversion,如下图所示。

设置编码

导出/导入配置

做了这么多配置,接下来就是导出配置了,方便以后直接导入配置,以免遇到意外情况咱又得重新配置了啊。点击菜单栏的File→Export Settings,弹出导出设置窗口,选一下导出路径,默认把所以内容都导出到settings.jar。

导出设置

导入设置就更简单了,点击菜单栏的FileàImport Settings,弹出导出设置窗口,选择要导入的settings.jar文件,点击OK即可。

导入设置

常用插件

如何添加插件

关于插件的操作都是在Settings→Plugins栏里,如下图所示。

Plugins设置

可以看到有三种安装插件的方式,一个是JetBrains plugin官方插件,一个是Browse repositories来自仓库的插件,最后一个是离线安装本地插件。其中前两种插件的安装方式差不多,咱以安装Genymotion为例记录一下操作流程。点击Browse repositories弹出一个新窗口,在搜索栏中输入Genymotion搜索,在搜索结果右侧出现Install plugin的绿色安装,点击即可联网安装该插件,完成之后会要求重启AS,如下图所示。

安装Genymotion插件

另一种本地安装的方式,点击Install plugin from disk后选择下载好的插件包即可安装,完成之后同样需要重启AS使得插件生效。

几个常用插件

除了前面举例子安装的Genymotion插件外,咱再列举几个常用的插件。如何使用就不展开了,后面涉及到了再说。

  1. GsonFormat。
    生成Gson相应的实体类,项目地址:https://github.com/zzz40500/GsonFormat

  2. AndroidParcelable Code Generator
    parcelable 序列化代码补全,项目地址:https://github.com/mcharmas/android-parcelable-intellij-plugin

  3. Android MaterialDesign Icon Generator
    material-design-icon资源生成器,项目地址:https://github.com/konifar/android-material-design-icon-generator-plugin

  4. SelectorChapekfor Android
    根据资源自动生成相应的selector,免得对selector文件复制粘贴了。项目地址:https://github.com/inmite/android-selector-chapek

  5. ButterKnifeZelezny
    快速生成butterknife注入代码,项目地址:https://github.com/avast/android-butterknife-zelezny

  6. idea-markdown
    markdown插件,项目地址:https://github.com/nicoulaj/idea-markdown

  7. Codota
    搜索代码的插件,项目地址:https://www.codota.com/

  8. ADB Idea
    通过该插件可以轻松完成以下操作而不用手动输入ADB命令。项目地址:https://github.com/pbreault/adb-idea

  9. Android DrawableImporter
    Android Drawable Importer添加了一个在不同分辨率导入画板或缩放指定图像到定义分辨率的选项。这个插件加速了开发人员的画板工作。项目地址:https://github.com/winterDroid/android-drawable-importer-intellij-plugin

  10. Android HoloColors Generator
    此插件会生成所有必要的可在项目中使用的相关的XML画板和样式资源。项目地址:https://github.com/jeromevdl/android-holo-colors-idea-plugin

Gradle构建系统初体验

Gradle 是以 Groovy 语言为基础,面向Java应用为主。基于DSL(领域特定语言)语法的自动化构建工具。Gradle通过提供说明性语言元素将说明性构建推到下一层。这些元素也提供build-by-convention支持Java、Groovy、OSGi、Web和Scala项目。而且,这个说明性语言是可扩展的。添加自己的新语言元素或提高现有的,从而提供简洁、易于维护和理解构建。

安装Gradle

在咱上一篇测试开发环境的时候新建HelloWorld项目后会自动下载Gradle到C:\Users<用户名>.gradle\wrapper\dists目录,生成一个名为gradle-x.xx-all的文件夹。

文件结构

先来看看项目构建文件HelloWorld/build.gradle,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Top-level build filewhere you can add configuration options common to all sub-projects/modules.

buildscript {
repositories {
jcenter() // 声明仓库的源
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0' // 声明gradle的版本

// NOTE: Do not place your application dependencies here;they belong
// in the individual modulebuild.gradle files
}
}

allprojects {
repositories {
jcenter() // 所有项目的存储库
}
}

内容主要包含:一是声明仓库的源,这里可以看到是指明的jcenter(),之前版本则是mavenCentral(),jcenter可以理解成是一个新的中央远程仓库,兼容maven中心仓库,而且性能更优。另一个是声明了android gradle plugin的版本,最后是所有项目的存储库。

再来看看模块构建文件HelloWorld/app/build.gradle,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
applyplugin: 'com.android.application'       // 声明是Android程序

android {
compileSdkVersion 23 // 编译SDK的版本
buildToolsVersion "23.0.1" // build tools的版本

defaultConfig {
applicationId "com.leon.helloworld" // 应用的包名
minSdkVersion 18 // 最小SDK的版本
targetSdkVersion 23 // 目标SDK的版本
versionCode 1 // 版本号
versionName "1.0" // 版本名称
}
buildTypes {
release { // 正式版配置
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies { // 依赖配置
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.1'
}

在正式版配置中,minifyEnable false 是apk是否变小压缩apk的意思;proguardFiles这部分有两段,前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,免去了我们很多事,这个文件的目录在 <sdk目录>/tools/proguard/proguard-android.txt,后一部分是我们项目里的自定义的混淆文件,就在 app/proguard-rules.pro,在这个文件里你可以声明一些第三方依赖的一些混淆规则。最终混淆的结果是这两部分文件共同作用的。
在依赖配置中,一般有这三种依赖关系:模块依赖,远程二进制依赖和本地二进制依赖。上面内容中的依赖分别是本地依赖和远程依赖。

再来看看gradle项目设置配置文件HelloWorld/settings.gradle,内容如下:

1
include':app'

主要声明一些需要加入gradle的模块,本例中只有一个app模块,如果还有其他module都需要按照如上格式加进去。

最后来看看SDK/NDK配置文件HelloWorld/local.properties,内容如下:

1
2
3
4
5
6
7
8
9
10
11
## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Tue Jan 19 21:34:45 CST 2016
sdk.dir=D\:\\Programs\\android-sdk

主要是配置sdk和ndk的路径,本例中只有SDK的路径。
关于gradle的基础知识先到这里。

导入第三方库

主要提一下几个咱平时用到的导入方法。

Gradle 直接添加法

以图像加载库Android-Universal-Image-Loader为例,从官方指导上可以看到添加这个库需要在gradle依赖配置中添加一行代码即可,如下图所示。

QuickSetup

同步一下gradle设置即可,如下图所示。

添加远程依赖库

jar 包直接导入法

ViewPagerIndicator为例,下载完最新jar包,放到app/libs目录,选中该库,鼠标右键,选择Add As Library,如下图所示,然后在弹出的Create Library窗口点击OK即可。

添加本地依赖库

完成之后,可以看到jar包多了个展开三角形,并且在app/build.gradle下生成了一行代码compilefiles(‘libs/ViewpagerIndicator_1.0.2.jar’),如下图所示,所以还有另一种方法就是直接在app/build.gradle文件中添加这一行代码即可。

添加成功

so 库简单粗暴法

直接在app/src/main目录下创建jniLibs目录,再将so文件拷贝到该目录内即可。

部分开源库折腾法

以下拉刷新库Android-PullToRefresh为例,先把项目下载到本地。
在咱自建的项目的根目录创建一个libraries目录,将Android-PullToRefresh-master中的library重名为pulltorefresh,放入新建的libraries目录下,在pulltorefresh中再创建build.gradle文件。如下图所示。

第三方类库结构

其中build.gradle文件的内容与项目的gradle配置一致,具体参考project项目构建文件和app模块构建文件。本例的设置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
apply plugin: 'android-library'

android {
compileSdkVersion 23
buildToolsVersion "23.0.1"

defaultConfig {
minSdkVersion 18
targetSdkVersion 23
}

sourceSets {
main {
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
manifest.srcFile 'AndroidManifest.xml'
}
}
}

接下来是在gradle项目设置配置文件(HelloWorld/settings.gradle)中引入这个类库模块。本例的设置如下:

1
include':app', ':libraries:pulltorefresh'

最后在app模块构建文件中添加依赖项。本例的设置如下:

1
2
3
4
dependencies {
...
compile project(':libraries:pulltorefresh')
}

做完以上配置,同步一下Gradle即可。要说明的是,根据实际情况,该库在导入时遇到一个问题,即PullToRefreshWebView.java代码中FloatMath.floor函数报错,解决办法是直接将此函数修改成Math.floor替换即可。