AndroidStudio开发必备常识之Gradle构建

  • 1、Android Studio是Google开发的一款面向Android开发者的IDE, 支持Windows、Mac、Linux等操作系统,基于流行的Java语言集成开发环境IntelliJ搭建而成。但是Android Studio 1.0推出后,Google官方将逐步放弃对原来主要的Eclipse ADT的支持,并为Eclipse用户提供了工程迁移的解 决办法。不过相信作为Developer的你上手AS 1.0以后你再也不愿意使用原来苦逼的Eclipse+ADT了,你会被AS的各种强大所吸引。现在已经是AndroidStudio2.0稳定版本。现在85%以上的互联网公司都是的是AS,所以学好AS是多么的重要 。
  • 2、学号AS的前提就是知道了解把握明白gradle是作什么的? 首先gradle是一个构建工具、gradle是以Groovy语言为基础的gradle主要面向的是Java语言。
  • 3、gradle详细介绍以及一些用法:
  • 3.1、通过gradle配置第三方jar包:我们看到,每个module都有一个build.gradle文件,它其实是对应module的配置文件。关build.gradle文件中具体内容的含义,我们将在最后一段进行讲解。
    我们先来看一下名为app的这个module,它的build.gradle对应的图形界面其实是下面这个Project Stucture:

这里写图片描述

切换到dependencies标签下,如下图所示:

这里写图片描述

上图中,点击添加,然后选择”Library dependency”,弹出如下界面:

这里写图片描述

我们在搜索框中输入“gson”,然后确定,就弹出了箭头处的我们需要的jar包,添加它即可:

这里写图片描述

之后我们会发现,app这个module的build.gradle中多了一行代码,表示引入了gson.jar:

这里写图片描述

其实,如果你能记得住上方这行代码,直接写出代码来也是可以导入的。

此时,gson这个jar包不再是出现在libs这个文件夹下了,而是出现在最下方的External Libraries中,如下图所示:(而且是最新版本哦)

这里写图片描述

  • 3.2、gradle导入jar包的特点:(和libs文件夹导入jar包的区别)
    gradle导入jar包更方便,一行代码即可搞定。不像后者那样还要自己去官方下载。如果官方将jar包更新了,我们只需要在build.gradle中改一下版本号就行了,不用重新去官网下载。

  • 3.3、通过gradle导入的jar包是从哪里来的:需要注意的是:不是所有的jar包都是可以通过gradle来导入的。那通过gradle导入的jar包是从哪里来的呢?解释如下:我们发现HelloWorld这个project的目录下有一个build.gradle文件,打开它:

这里写图片描述

上图中第17行的”jcenter()”的意思是,所有通过gradle导入的jar包都是从http://bintray.com/bintray/jcenter这个中央仓库上扒下来的。如果你需要的jar包在这个网站上没有,那就无法通过gradle的方式来导入哦。

  • 3.4、签名打包的两种方式:
    注:给我们自己开发的app签名,就代表着我自己的版权,以后要进行升级,也必须要使用相同的签名才行。签名就代表着自己的身份(即keystore),多个app可以使用同一个签名。如果不知道签名是啥意思,请自行百度哦。在eclipse中签名的方法是:选中工程,邮件选择”export-android-export android application”
    1、方式1:通过Android Studio进行签名:
    选中app这个module,选择菜单栏”Build-Generate signed apk”:

这里写图片描述

弹出如下界面:

这里写图片描述

上图中,如果你是第一次使用签名,就单击红框部分创建一个新的签名;如果你之前有过签名的文件,就选择蓝框部分进行导入即可。那我就先选择红框部分吧:

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

上图中,点击”finish”之后,可以看到Android Studio的最下方显示:Gradle正在执行assembleRelease这样一个任务,如下图所示:

这里写图片描述

生成签名好的apk之后,会弹出提示:

这里写图片描述

这里写图片描述

2、方式2:通过命令行的方式进行签名:
(1)加载Key Store:我们先删掉上面的通过第一种方式所签名的apk文件。接下来进行第二种方式来签名,即命令行的方式。
打开Project Stucture图形化界面:

这里写图片描述

上图中,选中app这个module,然后切换到singning标签栏,紧接着点击添加,然后生成release签名信息,紧接着点击”OK”。接着做如下操作:

这里写图片描述

上图中,切换到Build Types标签,将Signing config选择为”release”,即将刚刚生成的release签名信息配置进去。

操作完成之后,我们可以看到app这个module的build.gradle文件多出了如下红框部分的代码:

这里写图片描述

然后执行菜单栏的”build-clean Project”:

这里写图片描述

(2)生成realease版本的apk:

紧接着在命令行Terminal输入如下命令:(AS已经将命令行Terminal集成到了软件当中)gradlew assembleRelease如果运行成功,效果如下:

这里写图片描述

生成的签名好的apk在如下位置:

这里写图片描述

3、为什么要使用gradlew命令而不是gradle命令:
在HelloWorld工程目录下有一个gradle文件夹,在gradle/wrapper目录下有一个gradle-wrapper.properties文件,打开它:

这里写图片描述

上图代表着HelloWorld这个工程所依赖的gradle的版本信息。上图的红线表示,如果我们的工程中没有gradle,软件会根据这个url去下载gradle,终于知道为啥第一次打开AS时会这么慢了吧?如果我们执行了gradlew命令,实际上是执行上面的gradle wrapper,然后找到我们已经下载好的gradle 2.2.1。如果现在有很多个工程,但是每个工程的gradle版本都不一样,我就必须要将每个版本的gradle都要配置到环境变量当中,而执行了gradlew命令,就会避免这个麻烦。

  • 4、BuildConfig文件:BuildConfig是IDE自动生成的一个类,在elipse中即存放在gen目录下(如R文件)。而在Adroid Studio中,BuildConfig文件存放的位置是:app/build/generated/source/buildconfig/dubug//BuildConfig.java中。如下图所示:

这里写图片描述

  • 5、module中build.gradle文件参数含义:主要是module的build.gradle,截图如下:

这里写图片描述

01行:apply plugin: ‘com.android.application’ 表示该module是这个应用程序的module

15行:applicationId “com.smyhvae.helloworld” 应用程序的包名

16、17行:向下兼容的最小版本、编译版本。 注:在app/src/main/AndroidManifest.xml中不再出现这个信息了。

23行:需不需要利用24行的proguard文件来混淆代码。在release状态下,最好改为true。

  • 6、到此为止AS的基本情况相信你已经有个大致了解了。具体比Eclipse的优势体现在如下几点:

**a、AS是Google专门为Android基于IntelliJ IDEA打造的利器。亲生的永远是最好的,只是现在还在成长中而已。
b、AS在速度上不管哪一个方面都比Eclipse快。
c、Darcula主题UI简直就是极客范,帅爆了。
d、强大的智能提示补全功能在写代码时简直比Eclipse高效率N倍。
e、智能保存,不需要Ctrl + S。效率会大大提升。
f、整合Gradle构建工具,Gradle集合了Ant和Maven的优点,不管是配置、编译、打包都非常牛逼。
g、UI编辑器简直比Eclipse高效N倍,自带了多设备的实时预览,简直是神器。多语言适配点击地球直接输入,再也不用比较那个string没有翻译了。
h、内置终端直接替代cmd命令行,一个IDE全部搞定。
i、完善的插件系统,如Git、Markdown、Gradle等,直接搜索下载。
j、版本控制系统,安装的时候就自带GitHub, Git, SVN等流行的版本控制系统,可以直接check out你的项目,边写代码边右键可以直接具备BCompare功能与其他版本进行对比修改。**

  • 7、注意记住的地方:
  • Android Studio目录结构:
.idea://AS生成的工程配置文件,类似Eclipse的project.properties。
app://AS创建工程中的一个Module。
gradle://构建工具系统的jar和wrapper等,jar告诉了AS如何与系统安装的gradle构建联系。
External Libraries://不是一个文件夹,只是依赖lib文件,如SDK等。

新建工程项目后AS的Module目录结构如下所示:

build://构建目录,相当于Eclipse中默认Java工程的bin目录,鼠标放在上面右键Show in Exploer即可打开文件夹,
        编译生成的apk也在这个目录的outs子目录,不过在AS的工程里是默认不显示out目录的,就算有编译结果也不显示,右键打开通过文件夹直接可以看。
libs://依赖包,包含jar包和jni等包。
src://源码,相当于eclipse的工程。
main://主文件夹 
java://Java代码,包含工程和新建是默认产生的Test工程源码。 
res://资源文件,类似Eclipse。
layout://App布局及界面元素配置,雷同Eclipse。
menu://App菜单配置,雷同Eclipse。 
values://雷同Eclipse。
dimens.xml//定义css的配置文件。 
strings.xml//定义字符串的配置文件。 
styles.xml//定义style的配置文件。
......//arrays等其他文件。
......//assets等目录
AndroidManifest.xml//App基本信息(Android管理文件) 
ic_launcher-web.png://App图标 
build.gradle://Module的Gradle构建脚本
  • 8、Android Studio构建系统基础
  • 项目创建成功后会自动下载Gradle,这个过程特别慢,建议翻墙。下载的Gradle在Windows平台会默认在 C:\Documents and Settings<用户名>\ .gradle\wrapper\dists目录,这个目录下有个gradle-x.xx-all的文件夹,。也可以自己手动到Gradle官网下载对应的版本,然后将下载的.zip文件 (也可以解压)复制到上述的gradle-x.xx-all 文件夹下。每一个Module都需要有一个gradle配置文件,语法都是一样,唯一不同的是开头声明的是apply plugin。注意区分不同位置的build.gradle文件。
    AS的工程根目录下的build.gradle文件:
buildscript {       //设置脚本的运行环境
    repositories {  //支持java依赖库管理(maven/ivy等),用于项目的依赖
        //mavenCentral()    //仅仅是不同的网络仓库而已
        jcenter()           //推荐使用这个仓库
    }
    //依赖包的定义。支持maven/ivy、远程、本地库、单文件,前面定义了repositories{}jcenter库,使用jcenter的依赖只需要按照
    //类似于com.android.tools.build:gradle:1.0.0-rc2,gradle就会自动的往远程库下载相应的依赖。
    dependencies {  
        classpath 'com.android.tools.build:gradle:1.0.0-rc2'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
//多项目的集中配置,多数构建工具,对于子项目的配置,都是基于继承的方式。Gradle除了提供继承方式设置子项目,还提供这种配置
allprojects {
    repositories {
        jcenter()
    }
}

AS的工程根目录下的settings.gradle文件:

include ':app'      //module
include ':my_lib'   //module(build as lib)

AS的工程根目录下的Module的build.gradle文件(此处以一个简单的Lib module的gradle为例):

//plugin在AS里取值一般为'com.android.library'或者'com.android.application'
apply plugin: 'com.android.library' //构建为lib

android {
    compileSdkVersion 17            //编译需要SDK版本
    buildToolsVersion "19.1.0"      //SDK Manager确定本地安装该版本才可以

    defaultConfig {
        minSdkVersion 8         //最小版本
        targetSdkVersion 17     //目标版本
    }

    buildTypes {                //编译项
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {                  //依赖支持
    compile 'com.android.support:support-v4:18.+'
}

Gradle打包APP签名:
默认情况下,debug被配置成使用一个debug keystory。debug keystory使用了默认的密码和默认key及默认的key密码。debug构建类型会自动使用debug签名配置。 在你的Module的build.gradle文件中添加:

android {
    ......
    signingConfigs {
       myConfig{
         storeFile file("yanbober.keystore")
            storePassword "gradle"
            keyAlias "gradle"
            keyPassword "gradle"
        }
    }

   buildTypes{
     release {
        runProguard true
        zipAlignEnabled true
        // 移除无用的resource文件
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        signingConfig  signingConfigs.myConfig
     } 
   }
}

虽然经常使用项目根目录的相对路径作为keystore的路径,但是也可以使用绝对路径,尽管这并不推荐(除了自动创建出来的debug keystore)。 运行gradle clean gradle build即可生成签名混淆对齐的app。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值