在as 开发中,构建工具用的是gradle ,它是如何工作的呢?
先来看一下android 中 默认gradle 的写法
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath ‘com.android.tools.build:gradle:0.12.2’
}
}
apply plugin: ‘com.android.application’
首先是构建脚本,可以看到第一段是 远程仓库,指的是你的依赖是从哪个仓库下载,现在多用的是 jcenter库,你也可以通过ftp,或者构建自己的远程仓库
第二段是依赖,依赖分为三部分 group,name,version,你可以采用 *.**.+ 的方式来使用动态版本库,我们先看下 as中dependencies 中的写法
dependencies {
//---> 指出编译libs 目录下所有.jar 结尾的文件
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.1.0'
testCompile 'junit:junit:4.12'
compile 'com.android.support:cardview-v7:25.1.0'
}
gradle 语法,自写gradle 参考:
http://blog.csdn.net/wuchuang127/article/details/39501131
看上边代码可知,将Jar文件拷贝入 libs 目录下,与引入 dependencies {} 效果是相同的,那么so 文件的引入又发生了什么呢?
so文件的引入方式在此不多提,可参考: http://blog.csdn.net/wulianghuan/article/details/44567001
首先,so文件是什么?
如果项目中使用到了NDK,它将会生成.so文件,so文件依赖abi,且跨平台,是unix的动态连接库,是二进制文件,Android NDK将C++/C编译成so文件,在项目运行中,你所使用的so对应的abi决定了你的应用是否支持所对应cpu的手机
.so文件详解参考,关于so你不知道的那些事 : http://www.jianshu.com/p/cb05698a1968
NDK是用来给安卓手机开发软件用的,但是和SDK不同的是它用的是C语言,而SDK用的是Java语言。
每个module 有一个gradle,一个项目有一个全局的gradle,gradle 是基于gavelly 的一门脚本语言,原理与前端gulp构建相似(通过对文件分析,输入管道流处理之后,将构建完成的文件进行输出)