Android Studio 和 Gradle 构建基础

本文讲解目前主流的Android Studio的基本使用(以1.4为例),以及简单使用Gradle构建、签名打包apk。本文针对刚接触Android Studio的同学,老鸟飞过。

阅读本文,首先得明白Android Studio中的基本概念:
1. Eclipse 的 Workspace == Android Studio 的Project
2. Eclipse 的 Project == Android Studio 的Module

一. 基本设置

由于之前一直用 Eclipse 开发,AS 的默认快捷键和Eclipse是完全不同的风格,为了更好的掌握 AS,建议熟悉 AS 的默认快捷键。而对于那些养成习惯,实在是不想改的快捷键,当然还是保持原样了(如:Ctrl+Y->重做,Ctrl+左键->查看定义)

1. 快捷键

  1. 设置Ctrl+左键,查看定义:Settings->Keymap->搜 declaration

  2. 设置Ctrl+Y,重做:Settings->Keymap->搜 redo

2. 自动导包

从外部拷贝的代码,最好能让IDE自动导包

Settings->Editor->General->Auto Import->Java面板->All、勾选下面三项

3. 显示行号

两种方式:

  1. Editor->Appearance->Show line number
  2. 在代码编辑区左侧的空白处,右键 ->Show line number

常用的快捷键

快捷键 作用 对比Eclipse
CTRL+ALT+V 自动补全 CTRL+2+L+Enter
CTRL+ALT+L 代码格式化 CTRL+SHIFT+F
CTRL+H 显示类继承关系 CTRL+T
CTRL+ALT+O 自动整理import CTRL+SHIFT+O
CTRL+R 替换 CTRL+H
CTRL+P 提示参数 ALT+/
CTRL+SHIFT+A 符号查找(针对代码) ——
DOUBLE SHIFT 全局查找(针对设置) CTRL+F
ALT+ENTER 智能提示 ALT+/
ALT+Insert Getter和Setter 右键->Source
ALT+ENTER 智能提示 ALT+/
F8 Step over(调试) F6
CTRL+F9 构建Gradle Run->clean
CTRL+E 最近修改文件 ——
CTRL+SHIFT+E 最近操作的辅助面板 ——
CTRL+ALT+T 包裹代码块 SHIFT+ALT+Z
CTRL+ALT+M 抽取方法 右键-Refactor-ExtractMethod

待补充….

二. AS的使用

导入本地和在线的Jar包

第一:本地Jar包

  1. 拷贝 Jar 包,粘贴到 Module/libs 下,右键 Module->Open Module Settings->dependencies->点击+号->选择File dependency->选择libs下的Jar包->ok

  2. 拷贝 Jar 包,粘贴到 Module/libs 下,点击工具栏的“Sync Project with Gradle Files”同步Gradle。

第二:导入在线 Jar 包

利用Gradle 导入Jar 包,不需要事先下载,直接输入Jar包名即可。
步骤:

  1. 右键 Module->Open Module Settings->dependencies->点击+号->选择Linrary dependency

  2. 输入关键字(如:”Gson”),选中后点击ok。

Gradle将自动从jcenter中央仓库下载(https://bintray.com/bintray/jcenter),该配置在project下的build.gradle。

allprojects { repositories { jcenter() }
}

安装插件

AS提供了一种完美的插件安装模式,类似VS的NuGet,安装方法如下:

Settings->Plugins

三种安装方式:
1. Install JetBrains plugin (安装 JetBrains 插件)
2. Broswer repositories (在线安装)
3. Install plugin from disk (从硬盘安装)
详细步骤请看:这里

推荐几个高效的插件
安装下面的插件,只需要在上述 Broswer repositories 输入名称,然后install plugin

1. ButterKnife Zelezny

注解生成器,直接根据 XML 布局生成对应的注解。使用说明

2. SelectorChapek

自动化Selector选择器生成器,一键生成所需要的selector。使用说明

3. GsonFormat

自动根据json字符串,按照Gson的规范生成JavaBean,解放码农。使用说明

4. Android Parcelable Code Generator

快速生成Android Parcelable文件,大大提高了效率。使用说明

5. LeakCanary

这是一款内存泄露检测工具,使用说明

6. findBugs-IDEA

这块插件能静态分析,找出可能的bug。使用说明

7. genymotion

一款速度可以和真机媲美的模拟器。官网

运行、调试技巧

运行时调试

运行时调试是指在程序运行时,将进程设置为”调试进程“,直接进入debug模式。是开发中最常用的方式。不必每次调试部署应用,减少等待时间。

在Eclipse运行时调试需要打开ddms透视图,选中进程,点击左上角的小虫子。

Android Studio 和 Gradle 构建基础_第1张图片

步骤:
1. 部署应用程序到模拟器
2. 点击工具栏“Attach debugger to android process”
3. 设置断点

Android Studio 和 Gradle 构建基础_第2张图片

Module 的创建和引用

Module也就是Eclipse中项目的概念,下面是使用Module需要注意的地方。

  1. 创建 Library Module 并关联工程Module
    创建:File->New->New Module,选择Android Library->Finish
    关联:工程Module上右键->Open Module Setting->dependencies->点”+”号->Module dependency->选择->ok

  2. 删除 Module
    第 1 步:Module上右键->Open Module Setting->点”-“号移除
    第 2 步:Module上右键->delete 删除

  3. 导入Project Structure移除的Module
    打开Project的build.gradle,添加一行代码:include ‘:[ModuleName]’
    注意:此方法是导入在Project Structure移除但没有delete的Module

三. Gradle 简单配置和签名打包

Gradle 是基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。详细解释,这里介绍两种打包方式。

Studio自带方式

菜单栏:Build->Generate Signed Apk
没有签名文件,则需要先创建,填写如下信息:

Key store path(生产key文件的保存路径 )

Key store password(key 存储密码)

Key alias(key别名)

Key password(key密码)

完成后点击保存,得到xxx.jks(Java Key Store)
Studio自带的打包方式可以自己制定apk输出路径

命令行方式

使用命令行需要对工程进行签名配置,步骤如下:
1. 准备好jks文件,如果没有就按上述步骤生成
2. File->Project Structure->选择工程Module
3. 打开 Signing 标签下点击”+”号,填写信息,选择jks
4. 打开 Build Types ,点击Release,选择Signing config,选择签名
5. ok

Android Studio 和 Gradle 构建基础_第3张图片

接着,打开 Terminal 面板,输入:

gradlew assembleRelease

两者比较

构建方式 Studio 方式 Gradle 方式
自动程序 全自动 纯手动
输出路径 Project\ Project\Module\build\outputs\apk\
配置签名 事先配置签名 打包时再配置

注意:如果没有配置 sign,直接使用 gradlew
assembleRelease,则会得到一个app-release-unsigned.apk 该文件无法genymotion上安装。

gradlew的原理

执行gradlew assembleRelease实际上做了做了哪些事:
1. 运行 gradle-wrapper.jar
2. gradle-wrapper.jar 根据 gradle-wrapper.properties 文件的配置找到了系统中对应的gradle目录/bin/gradle
3. 用系统的gradle,执行assembleRelease

这样做的好处,高度解耦,不需要配置环境变量。

buildConfig的使用

在 build/generated/source/buildConfig 下分别有debug和release两个目录,各自含有BuildConfig.java。 如果当前编译环境(Build Variants)为debug,则使用debug\BuildConfig, 当前环境为 release,则使用release\BuildConfig

编译环境通过“Build Variants“工具面板进行设置

我们可以利用BuildConfig的这一特性,控制日志输出,代码如下:

if (BuildConfig.DEBUG){
    Log.d(TAG, "...");
}

四. Gradle代码介绍

Module/build.gradle

// 当前Module的类型
// 普通 Module :'com.android.application'
// Library Module: 'com.android.library'
apply plugin: 'com.android.application'

android {
    //签名文件配置信息
    signingConfigs {
        // 别名
        keyAlias 'myhome_alias'
        // key密码
        keyPassword '123456'
        // 存储路径
        storeFile file('xxx.jks')
        // 存储密码
        storePassword '123456'
    }
    compileSdkVersion 23
    // 是你SDK里的编译工具版本号(%SDK_DIR%\build-tools)
    buildToolsVersion "23.0.2"
    defaultConfig {
        applicationId "cn.ifavor.home"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            // 是否混淆
            minifyEnabled false
            // 混淆规则文件,前一个是sdk的,后一个是自己的
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            // 上面配置的签名
             signingConfig signingConfigs.config_myhome
        }
    }
}

// 各种依赖库
// compile fileTree:引入jar
// compile project:引入Library Module
// compile 第三方库
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:recyclerview-v7:23.1.1'
    compile 'com.android.support:cardview-v7:23.1.1'
    compile 'com.google.code.gson:gson:2.4'
}

Project/build.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        // 当前AS的Gradle插件,此插件和Gradle相当于ADT和SDK
        classpath 'com.android.tools.build:gradle:1.3.0'
    }
}

// 配置中央仓库
allprojects {
    repositories {
        jcenter()
    }
}

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

Project/settings.gradle

// 将某个Module和该工作空间(Project) 建立联系
include ':app'

你可能感兴趣的:(android,android,gradle,Studio)