您的位置:首页 > 其它

Geek-Band--第十一周分享

2016-05-15 11:04 274 查看

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++写的库可以方便在其他的嵌入式平台上再次使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: