本文共 4326 字,大约阅读时间需要 14 分钟。
文章最早发布于我的微信公众号 Android_De_Home 中,欢迎大家扫描下面二维码关注微信公众获取更多知识内容。
本文为sydMobile原创文章,可以随意转载,但请务必注明出处!
Apache Ant 是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。默认情况下,它的buildfile(xml文件)名为build.xml,每一个buildfile含有一个<project>
和至少一个预设的<target>
,这些targets包含许多task elements。每个task element有一个用来被参考的id,此id必须是唯一的。
build.xml范例
Apache Maven:是一个软件(特别是Java软件)项目管理以及自动构建工具,由Apache软件基金会所提供。是基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
Maven也可以被利用与构建和管理各种项目,例如:C#、Ruby、Scala和其他语言编写的项目。Maven曾经是Jakarta项目的子项目,现在已经成为Apache软件基金会主持的独立Apache项目了。 Maven项目使用项目对象模型(Project Object Modle,POM)来配置项目,对象模型存储在名为pom.xm的文件中。 简单示例:4.0.0 com.mycompany.app my-app 1.0 junit junit 3.8.1 test
Gradle 是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Groovy语言的特定领域语言(DSL语言,所谓的DSL是指这个语言应用在特定的领域,而类似Java这样是DCL语言,可以运用在普通的各个领域)来声明的项目设置,而不是传统的xml语言,当前支持的语言仅限于Java、Groovy、Scala、Kotlin。计划未来支持更多的语言。支持maven、lvy仓库。
过去Java开发者们常用Maven和Ant等工具进行封装部署的自动化,或者两者兼用,不过这两个工具彼此有优缺点,如果频繁改变相依赖包的版本,使用Ant相当麻烦,如果琐碎工作很多,Maven功能不足,而且两者都是使用xm描述的,相当不利于设计if、switch等判断式,即使写了可读性也不佳,Gradle改良了过去Maven、Ant带给开发者的问题,也已经成为Android Studio内置封装部署工具,比如添加项目依赖,发布版本,混淆配置等等。 优点:Android Studio中gradle配置文件的介绍:
//声明是Android程序apply plugin: 'com.android.application'//关于Android项目的一些配置android { compileSdkVersion 24 // 编译版本号(android.jar) buildToolsVersion '24.0.0' // build tools的版本号 //对lint的配置,lint可以用来检查代码 lintOptions { // 打包的时候省去不用的资源 disable "ResourceType" checkReleaseBuilds false // 关闭 abortOnError false } // 一些默认的配置 defaultConfig { applicationId "com.syd.demo" minSdkVersion 16 targetSdkVersion 22 versionCode 301 versionName "3.0.1" multiDexEnabled true ndk { //选择要添加的对应cpu类型的.so库。 abiFilters 'armeabi', 'armeabi-v7a', 'armeabi-v8a' // 还可以添加 'x86', 'x86_64', 'mips', 'mips64' } } // 对一些构建的配置 buildTypes { // 对打包发布的一些配置 release { // 是否进行混淆 minifyEnabled false // 混淆文件的位置 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } // 签名配置,配置上之后再运行或者debug的时候就会使用你的签名打成包了而不是默认的 signingConfigs { debug { //签名文件的位置(直接和本文件放在一层就好了) storeFile file('xxx.keystore') storePassword "xxxx" keyAlias "xxxx.keystore" keyPassword "xxx" } }}// 项目的一些依赖库的添加dependencies { // 编译libs目录下的所以jar包 compile fileTree(include: ['*.jar'], dir: 'libs') compile files('libs/universal-image-loader-1.9.5.jar') //添加maven仓库里面的依赖 compile 'com.xxx.xx.xx' //项目模块依赖 里面的项目路径是相对于本文件的 compile project(':项目名字’)}// 对依赖的仓库的声明repositories { // 可以理解为一个在网络上的存放依赖包的仓库,在这里声明后,你才可以直接在上面添加这个仓库里面的依赖包,android studio默认的是jcenter仓库里面的 mavenCentral()}
proguardFiles这部分有两段,前一段代表系统默认的android程序的混淆文件,该文件已将包含了基本的混淆声明,免去了我们很多的事情,这个文件的目录在你的sdk目录中的tools/proguard/proguard-android.txt 后面的一部分是我们项目里面自己定义的混淆文件,目录就是 app/proguard-rules.txt如果你使用的是Android Studio的话,创建的新的项目的时候默认生成的文件名是 proguard-rules.pro 在这里你可以声明一些第三方依赖的混淆规则,最终混淆的结果是这两个部分所共同决定了,关于混淆的知识在以后的文章里面会发布。
每一个module都需要一个Gradle配置文件,语法都是一样的,唯一不同的就是开头的声明,项目的开头声明是apply plugin:’com.android.application’ 而作为类库依赖的开头是:apply plugin:’com.android.library’
项目目录下的gradle是整个项目的gradle基础配置文件,里面主要包含了:声明依赖和插件的仓库的来源buildscript { repositories { jcenter()//这是构建插件所使用的远程库,后需会有一篇介绍库的含义 } dependencies { classpath 'com.android.tools.build:gradle:2.0.0-alpha1'//这是项目所使用的 Android gradle 版本 }}allprojects { repositories { jcenter()//这是使用远程库依赖的时候,的远程库 }}
参考:
维基百科
关于远程依赖库的知识后面的文章会讲到,你也可以关注我的微信号,更快的获取更新!
关注微信公众号,及时获取内容更新