• gradle构建android项目


    工具:

      Android Studio2.0

      gradle-2.10

    一、Android常识


      在做Android开发的时候我们首先必须要有一个SDK。一般SDK的主要作用就是将硬件和软件进行分离,做软件开发的程序员不需要知道如果去控制底层硬件的行为,SDK已经将对硬件的操作封装好,并且为我们提供了一套API,我们只需要调用相应的API就可以达到控制硬件的效果。官方的SDK是由google来发布,而每个硬件厂商会根据自己的硬件情况对SDK进行修改,主要是对底层的修改,并且保证上层API接口不变,这样我们开发的APP才能够运行在不同的硬件设备上。下来我们看看Android Studio中的SDK。

    1.打开SDK管理器

    该管理器主要管理我们已将下载好的各个版本的SDK

    SDK管理器的部分内容

    • Tools Android工具集

      •  SDK Tools工具集,该工具集中包含了许多我们开发时用到的工具。比如说模拟器工具(模拟Android系统)、画图工具、模拟SD卡工具等
      •    SDK Platform-tools工具集 该工具集中有adb指令工具、sqlite数据库、堆栈查看工具等。
      •    SDK Build-tools  构建我们的android项目,其下面有dex、aapt等工具,对我们的项目进行编译、打包等。
      •    上面这个三个工具都能在我们下载的SDK中找到
    • Andoid6.0(API 23)

      该包的主要作用是用来构建模拟器的,其中的SDK的开发文档,SDK的平台依赖,cpu模拟器(包含多个CPU架构,System Image)。如果我们需要使用AVD的话就需要下载该包。

    •  Extras 主要提供Android开发时需要的类库,这里安装了Google提供的类库

    一、gradle文件


     

    当我们新建一个android项目后,Andriod Studio会自动为我们创建多个gradle文件和目录,具体内容如下:

    下面我们分别对这几个目录进行分析:

     二、app下的build.gradle


     

    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.3"
    
        defaultConfig {
            applicationId "xidian.dy.com.basicapp"
            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.4.0'
    }
    • apply plugin                   来声明程序,这里声明这是个android应用
    • compileSdkVersion 23     来声明编译android程序时使用的SDK版本,不同版本其API会有差异,但是一般都向下兼容的
    • buildToolsVersion "23.0.3"   使用的构建工具版本,有时我们导入了别人的工程,但是就是编译不通过,其主要原因就是我们构建工具版本不对
    • applicationId                  代表应用的包名,这是我们应用的唯一标识
    • minSdkVersion 15           为了我们的程序能够在低版本的Android系统上运行,需要指定最低版本的系统
    • targetSdkVersion 23       这个可以认为我们的应用运行最合适的SDK版本
    • VersionCode 1                前面提到包名是应用的唯一表示,但是为了以防万一报名有重复的,又加入该字段(整型)。它还有一个重要作用就是版本覆盖,当我们安装高版本的应用                                      时会将低版本覆盖掉就是引用高版本的VersionCode值要大
    • versionName                 给人看的
    •  minifyEnabled              是否开启混淆,主要为了提高安全性,防止别人反编译我们的应用来查找代码漏洞
    • proguardFiles                这部分有两部分构成一个是android自带的混淆规则(proguard-android.txt),第二部分是我们自定义的混淆规则(proguard-rules.pro),最终的混淆结果                                     这两个文件共同作用
    • compile fileTree            编译libs目录下的所有jar包,要编译成dex文件

    三.MyApplication下的gradle文件夹


    该文件夹中有两个文件,主要的文件是配置文件properties

    #Mon Dec 28 10:00:20 PST 2015
    distributionBase=GRADLE_USER_HOME
    distributionPath=wrapper/dists
    zipStoreBase=GRADLE_USER_HOME
    zipStorePath=wrapper/dists
    distributionUrl=https://services.gradle.org/distributions/gradle-2.10-all.zip

    可以看到里面声明了gradle的目录与下载路径以及当前项目使用的gradle版本,这些默认的路径我们一般不会更改的,这个文件里指明的gradle版本不对也是很多导包不成功的原因之一。

     四、MyApplication下的build.gradle


     这个文件是整个项目的gradle基础配置文件,我们来看看这里面的内容。

    // 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.0.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
    }

    从上面的注视中我们可以看到这个一个顶层的配置文件,这里的配置可以影响到每个子配置文件。buildscript内容主要包含了两个方面:一个是声明仓库的源,这里可以看到是指明的jcenter(), 之前版本则是mavenCentral(), jcenter可以理解成是一个新的中央远程仓库,兼容maven中心仓库,而且性能更优。另一个是声明了使用gradle plugin的版本为2.0.0。

    五、MyApplication下的settings.gradle


    这个文件是全局的项目配置文件,里面主要声明一些需要加入gradle的module,我们这里的module只有一个app

    include ':app'

    六、总结


    关于gradle就介绍到这里,对于项目/工程与module的关系请查看链接

    http://stormzhang.com/devtools/2014/11/28/android-studio-tutorial2/

  • 相关阅读:
    Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
    发送广播重新挂载SD卡,使图库可以及时显示自己保存的图片(无需手机重启)
    Android学习记录(10)—Android之图片颜色处理
    Android学习记录(9)—Android之Matrix的用法
    撕美女衣服应用的原理及做法
    以最省内存的方式把大图片加载到内存及获取Exif信息和获取屏幕高度和宽度的新方法
    通过广播关闭应用程序(每个Activity)和连续点击两次返回键关闭应用程序
    Android有效解决加载大图片时内存溢出的问题
    有关ViewFlipper的使用及设置动画效果的讲解
    Android学习记录(8)—Activity的四种加载模式及有关Activity横竖屏切换的问题
  • 原文地址:https://www.cnblogs.com/xidongyu/p/5544124.html
Copyright © 2020-2023  润新知