Geek-Band--第十一周分享

来源:互联网 发布:网络传真机号码 编辑:程序博客网 时间:2024/04/30 15:01

Gradle

什么是Gradle?

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。
面向Java应用为主。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。

gradle提供了什么?

1.一种可切换的,像maven一样的基于约定的构建框架,却又从不锁住你(约定优于配置)
Switchable, build-by-convention frameworks a la Maven. But we never lock you in!
2. 强大的支持多工程的构建
3. 强大的依赖管理(基于Apache Ivy),提供最大的便利去构建你的工程
Language for dependency based programming
4. 全力支持已有的Maven或者Ivy仓库基础建设
5. 支持传递性依赖管理,在不需要远程仓库和pom.xml和ivy配置文件的前提下
6 基于groovy脚本构建,其build脚本使用groovy语言编写
7 具有广泛的领域模型支持你的构建A rich domain model for describing your build.
如图所示

这个文件是app文件夹下这个Module的gradle配置文件,也可以算是整个项目最主要的gradle配置文件,我们来看下这个文件的内容:  // 声明是Android程序 apply plugin: 'com.android.application' android {// 编译SDK的版本compileSdkVersion 23// build tools的版本buildToolsVersion "23.0.3"defaultConfig {    // 应用的包名    applicationId "com.example.houha.sensor"    minSdkVersion 15    targetSdkVersion 23    versionCode 1    versionName "1.0.0"}// java版本compileOptions {    sourceCompatibility JavaVersion.VERSION_1_7    targetCompatibility JavaVersion.VERSION_1_7}buildTypes {    debug {        // debug模式    }    release {        // 是否进行混淆        minifyEnabled false        // 混淆文件的位置        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'    }}  dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])testCompile 'junit:junit:4.12'compile 'com.android.support:appcompat-v7:23.3.0' }  gradle-wrapper.properties 这个文件的内容:   distributionBase=GRADLE_USER_HOME   distributionPath=wrapper/dists   zipStoreBase=GRADLE_USER_HOME   zipStorePath=wrapper/dists   distributionUrl=https://services.gradle.org/distributions/gradle-2.2.1-all.zip

这个文件是整个项目的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 }

gradle的功能

  • gradle对多工程的构建支持很出色,工程依赖是gradle的第一公民。
  • gradle支持局部构建。
  • 支持多方式依赖管理:包括从maven远程仓库、nexus私服、ivy仓库以及本地文件系统的jars或者dirs
  • gradle是第一个构建集成工具(the first build integration tool),与ant、maven、ivy有良好的相容相关性。
  • 轻松迁移:gradle适用于任何结构的工程(Gradle can adapt to any structure you have.)。你可以在同一个开发平台平行构建原工程和gradle工程。通常要求写相关测试,以保证开发的插件的相似性,这种迁移可以减少破坏性,尽可能的可靠。这也是重构的最佳实践。
  • gradle的整体设计是以作为一种语言为导向的,而非成为一个严格死板的框架。
  • 免费开源

NDK

NDK包括了:

从C / C++生成原生代码库所需要的工具和build files。
将一致的原生库嵌入可以在Android设备上部署的应用程序包文件(application packages files ,即.apk文件)中。
支持所有未来Android平台的一系列原生系统头文件和库

为何要用到NDK?

概括来说主要分为以下几种情况:
1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。
2. 在NDK中调用第三方C/C++库,因为大部分的开源库都是用C/C++代码编写的。
3. 便于移植,用C/C++写的库可以方便在其他的嵌入式平台上再次使用。

0 0
原创粉丝点击