Android Studio重构之路,我们重新来了解一下Google官方的Android开发工具


记得我的第一篇博客就是写Android Studio,但是现在看来还是有些粗糙了,所有重构了一下思路,覆写了一篇

  • Google主推-Android开发利器——Android Studio,这可能是最全的AS教程!

Android Studio,自Google2013年发布以来,就倍受Android开发者的喜爱,我们本书,就是基于Android Studio来进行案例演示的,大家都知道,Android Studio的前身是基于IntelliJ IDEA,而在此之前,我们开发Android一直以来都是以Eclipse用ADT插件的形式来开发了,可能也是Android的不断壮大,Google决定像苹果的Xcode或者微软的Visual Studio一样,也给自家的产品开发一套定制工具,所以Android Studio应运而生,现阶段,Android Studio正式版已经更新到2.X版本了,各方面的性能已经很稳定了,这就是我们用它来开发的理由

1.1官方简介

既然要使用Android Studio,所以我还是建议先看一下官方的介绍,这样,我们在后面讲一些使用方法的时候,就可以轻车熟路了

1.1.1 智能代码编辑器

Android Studio 的核心是一个智能代码编辑器,可进行高级代码完成、重构和代码分析。

这款功能强大的代码编辑器可帮助您成为更高产的 Android 应用开发者。

1.1.2 代码模板和 GitHub 集成

新项目向导让开始一个新项目变得前所未有的简单。

可使用适用于不同模式(如抽屉式导航栏和视图分页器)的模板代码开始项目,甚至可以从 GitHub 导入 Google 代码示例。

1.1.3 多屏幕应用开发

构建适用于 Android 手机、平板电脑、Android Wear、Android TV、Android Auto 以及 Google Glass 的应用。

Android Studio 内全新的 Android 项目视图和模块支持让应用项目和资源管理变得更加轻松。

1.1.4 用于模拟所有形状和尺寸的虚拟设备

Android Studio 预先配置了经过优化的模拟器映像。

经过更新和精简的虚拟设备管理器可为常见 Android 设备提供预定义设备配置文件。

1.1.5 Android 版本借助 Gradle 演进

使用同一项目为您的 Android 应用创建多个具有不同功能的 APK。

使用 Maven 管理应用依赖项。

使用 Android Studio 或命令行构建 APK。

1.1.6 总结

  • 这款由 JetBrains 推出并广受欢迎的 Java IDE 以 IntelliJ IDEA Community Edition 为基础构建
  • 基于 Gradle 的灵活构建系统
  • 构建变体和多 APK 生成
  • 为 Google 服务和各种设备类型提供扩展模板支持
  • 支持主题编辑的富布局编辑器
  • 可捕捉性能、可用性、版本兼容性以及其他问题的 Lint 工具
  • ProGuard 和应用签名功能
  • 内置对 Google 云平台的支持,可轻松集成 Google Cloud Messaging 和应用引擎

1.2 下载安装

Android Studio的下载还是很简单的,不光官方可以下载,还有很多国内的资源网站都是可以下载的

官方地址:http://developer.android/sdk/index.html

但是这里还是要注意一下下载的版本

这里MAC和Linux平台都是只有一个下载,但是Windows,却有三个,这里要说明一下这三个的区别了

  • Android Studio安装包集成了SDK
  • Android Studio安装包
  • Android Studio包解压就能用

前两个分别是一个带有SDK,一个没有,第三个,他不需要安装,下载下来解压,就可以使用了,而且他有两个启动器,一个32位的,一个64位的

我们以集成了SDK的安装包为例,来演示一下怎么安装,其实也不难,只要你双击打开安装包,一直点下一步,中途会提示你是否导入项目,选择SDK的路径,下载一些需要的SDK支持包,就可以了,然后,我们的Android Studio就安装完成了

1.3 配置设置

一款好的IDE,强大的前提下,还得符合自己的编码风格,所以,我们要对她进行一些设置,这样,才能体验到他的强大性

1.3.1 主题

Android Studio的黑色主题还是非常的符合程序员的风格的,所以很多人也会选择这个风格,我们进入设置(工具类上扳手图标),这里Theme默认是Default我们这里选择Darcula,然后点击Apply就可以应用这个黑色主题了

1.3.2 编码风格

我们在编写代码的时候,一些字体颜色大小之类的都是要值得注意的地方,包括代码显示行数也能帮助我们调试bug

  • 字体大小

    我们进入Settings-Editor-Colors & Fonts-Font下,默认的两种主题我们是没办法修改的,我们需要自定义一个主题然后就可以修改了,操作如下: 我们点击Save As,提示你命名,你随便写个名字,就可以看到如图1.3.2所示



这里的Primary font是字体,你可以选择自己喜欢的字体,Size为字体大小,Line Spacing是行距

当然,你也可以在Colors & Fonts目录下看到很多的设置,比如Consale Font控制台字体大小什么的,这个这里就不多赘述了

  • 自动导包

    手动导包还是有点麻烦的,我们本着能省就省的原则,设置一下自动导包的功能,路径为:Settings-Editor-General-Auto Import选项下,勾上以下几个选项

    • XML
      • show import popup
    • JAVA
      • insert imports on paste选择none
      • show import popup
      • optimize imports on the fly
      • add unambiguous imports on the fly
    • C/C++
      • show import popup
  • 显示代码行数

    这个功能也是很重要的,我们可以勾选Settings-Editor-General-Appearance-show line numbers就可以了

1.3.3 智能化

这里我们可以来设置Android Studio的智能化来设置快捷键,自动代码提示,自动代码补全等功能

  • 快捷键

    Android Studio快捷键相较于Eclipse还是做了一些改动的,但是,Google做的很灵活,他提供了快捷键的选择,我们进入Setting-keymap里选择Eclipse,熟悉的快捷键就回来了

  • 代码自动提示

    代码自动提示设置起来也很方便,Eclipse上,你鼠标悬浮在代码上会弹出提示框,但是再Android Studio默认是没有的,因为如果电脑配置不是很高的话,这样会让界面很卡,如果你想打开这个功能我们可以进Settings-Editor-General,把show quick doc on mouse move勾上就可以了

  • 不区分大小写

    Android Studio在默认是区分大小写的,也就是你输入代码的时候如果你输入小写,可能代码不会提示,当然,我们也是可以设置不区分的,在Settings-Editor-General-Code Completion中,Case sensitive completion选择none就可以了

  • 取消载入

    这个功能我觉得特别棒,比如我正在做A的项目,然后关掉Android Studio,等下次进来的时候打开Android Studio他会自动载入这个A项目,但是我其实想去做B项目的,所以我们取消这个功能,让他每次都进入主页供我们项目选择,也很简单,进入Systems-System Settings下,把Reopen last project startup的勾去掉即可

1.3.4 Log

在开发中,Log是必不可少的一个环节,他可以反馈很多程序中的信息来帮助我们开发以及调试bug,所以现在网上也是有很多log的框架和工具类,在Android Studio中默认的Log其实不算是很清晰,我们可以自己给Log设置一些颜色来改变他的反馈交互,我们进入Settings-Editor-Colors & Fonts-Android Log下,我们可以看到各个等级的Log,只要我们把Use Inberited attributes的勾去掉,就可以更换颜色了,这里,提供一套我的配色方案供大家参考

  • VERBOSE bfb9b9
  • DEBUG 0374c0
  • INFO 4bc332
  • WARN c6c61e
  • ERROR FF0006
  • ASSERT a00308

1.3.5 导出/导入Settings

Android Studio每次安装都要设置这么多配置,着实让人头疼,这就又引出Android Studio的一个人性化的设计了,他可以把设置到处成jar包的形式保存起来,你要是新安装的Android Studio,可以直接导入这个jar,就不用这么浪费时间的去配置了,方法很简单,我们菜单栏-File

  • Import Settings 导入设置
  • Export Settings 导出设置

1.3.6 插件

Android Studio的插件还是非常方便我们进行开发的,不得不在一次感叹Android Studio的强大,比如Gsonformat,butterknife等,我们这里稍微介绍一下安装插件的几种方式,我们进入Settings-Plugins

这里显示的是你安装的插件列表,下面三个按钮分别是

  • install letBrains plugin… 官方插件
  • Browse repositories… 第三方插件
  • install plugin from disk… 本地插件

官方/第三方安装

我们点击install letBrains plugin/Browse repositories,这里是一个搜索页面,我们以Gsonformat为例,搜索Gsonformat。然后点击install,安装完成之后,我们就可以在列表中看到Gsonformat的身影了,第三方插件方法是一样的

本地插件安装

安装本地插件其实就是导入,插件以jar或者zip的形式存在,我们只要点击install plugin from disk,我们选中插件即可

1.4 Gradle

Gradle是什么?Gradle是Android Studio项目的构建系统,是以 Groovy 语言为基础,面向Java应用为主,基于DSL(领域特定语言)语法的自动化构建工具,所以这就出现了Android Studio的项目结构和Eclipse的不一样了,我们具体来看一下,我们在项目的Gradle Scripts文件下可以看到

图1.4.1

这些就是我们项目构建之后的一些Gradle配置清单,我们来具体的了解一下这些文件夹是干什么的

  • build.gradle 构建文件
  • build.gradle 模块构建文件
  • gradle-wrapper.properties Gradle相关配置文件
  • proguard-rules.pro 混淆文件
  • gradle.propertles 配置文件
  • setting.gradle 设置配置文件
  • local.propertles sdk,ndk配置文件

而我们所要了解的也不是说全部,只要了解一下构建文件和模块构建文件就可以,我们会看一下构建文件里面都有些什么

    // Top-level build file where you can add configuration options common to all sub-projects/modules.

    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:2.1.0'

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

    allprojects {
        repositories {
            jcenter()
        }
    }

    task clean(type: Delete) {
        delete rootProject.buildDir
    }

这里面,就是一个标准的Gradle构建系统的代码,我们来看

  • jcenter() 存储库 可以更换
  • classpath 依赖的Gradle版本
  • repositories 所有项目的存储库

我们再来看一下模块构建系统

    apply plugin: 'com.android.application'

    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.3"

        defaultConfig {
            applicationId "com.lgl.helloandroid"
            minSdkVersion 15
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
        }
        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:23.3.0'
    }

这里,我们就要多关注一下了

  • apply plugin :声明一个工程的类型
  • compileSdkVersion : 最高API
  • buildToolsVersion : 编译工具版本
  • applicationId : 包名
  • minSdkVersion : 最小API
  • targetSdkVersion : 编译版本
  • versionCode : 版本号
  • versionName: 版本号(细分)
  • buildTypes: 构建类型
  • minifyEnabled : 是否压缩apk
  • proguardFiles getDefaultProguardFile: 混淆配置文件
  • dependencies : 依赖配置
  • compile fileTree:依赖二进制文件
  • compile : 远程二进制依赖

1.5 多渠道打包

国内的Android市场那么多,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不累死了,不过我们上节看了Gradle,这就不算什么事情了,这里也就衍生出一个新词汇——多渠道打包,顾名思义,就是一键打包多个渠道,关于多渠道打包使用的平台和工具网上也是有比较多的,貌似用的比较多的是友盟,详情大家自己去友盟的官网上看看吧!

AndroidManifest.xml中修改以下值:

    <meta-data android:name="UMENG_CHANNEL" android:value="wandoujia" />    

meta-data修改以下的样子:

    <meta-data
         android:name="UMENG_CHANNEL"
         android:value="${UMENG_CHANNEL_VALUE}" />

其中${UMENG_CHANNEL_VALUE}中的值就是你在gradle中自定义配置的值。

build.gradle文件就利用productFlavors这样写:

    productFlavors {

    wandoujia {
    manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
    }

    baidu {
    manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
    }

    c360 {
    manifestPlaceholders = [UMENG_CHANNEL_VALUE: "c360"]
    }

    uc {
    manifestPlaceholders = [UMENG_CHANNEL_VALUE: "uc"]
    }

    }

其中[UMENG_CHANNEL_VALUE: “wandoujia”]就是对应${UMENG_CHANNEL_VALUE}的值。

其实上面的代码还是有点多余,我们可以缩减


    productFlavors {

    wandoujia {}
    baidu {}
    c360 {}
    uc {}

    productFlavors.all { flavor ->
    flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
    }

    }

1.5.1 传统打包方式

我们来熟悉一下传统的打包方式,用过Eclipse的同学应该知道,在Eclipse里,我们只要Export Android就可以打包一个项目,其实Android Studio的方式也是类似,菜单栏——Build——Generate Signed APK

这里要填写的其实和Eclipse差不多的,首先是Key Store的路径,我们没有,所有点Create new来创建

我们把路径,密码什么的填好之后,按OK,现在他会帮我们自动填充了,如果没有,你就自己输,然后next,然后finish就可以了

我们可以到app目录下找到我们打包的apk,同时也可以在我们指定的位置找到我们的签名文件xxx.jks

这篇文章我很久之前就有在写了,本来是准备以后写书的时候用的,无奈琐事繁忙,就放弃了,就想着分享出来吧,不然以后版本更新太快,这些也就无意义了

如果有兴趣,可以加群:555974449,我们一起聊个痛快~

更多推荐

Android Studio重构之路,我们重新来了解一下Google官方的Android开发工具