build.gradle文件的作用在于适配不同系统版本的手机调试应用、注入第三方类库、构建应用的SDK版本。
下面详细说一下gradle文件中代码的含义。
apply plugin : 'com.android.application' :这行代码的意思是说明model的类型 ‘com.android.application’ 作为应用程序。
apply plugin : 'com.android.library' :'com.android.library' 作为库。
我参与的App还用到了apply plugin : 'com.neenbedankt.android-apt' ,它是一个插件,用来帮助Android Studio处理annotation processors
。它的主要作用有两点,一是允许gradle文件只有在编译时作为注解处理器的依赖,不添加到library或者是左后的APK中;二是可以设置源路径,可以让Android Studio能正确的引用你所添加的依赖。除此之外我们还用到了apply plugin: 'realm-android',它是一款轻量级的数据库,相比SQLite,它更快,支持多种现代的数据库特性,使用起来更加方便。
repositories{
jcenter()
}
上面的代码的含义是gradle通过repository找到外部应用,gradle默认不指定任何仓库,jcenter是标准的Android代码库仓库,里面有很多开源的工具类和控件。repository支持多种库,比如maven,ivy。
dependencies{
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:support-v13:25.0.1'
compile 'com.android.support:appcompat-v7:25.0.1'
compile 'com.android.support:cardview-v7:25.0.1' compile '
com.android.support:recyclerview-v7:25.0.1'
compile 'com.android.support:design:25.0.1'
compile 'com.android.support:percent:25.0.1'
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta2'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2'
apt 'com.google.dagger:dagger-compiler:2.0.2'
provided 'javax.annotation:jsr250-api:1.0'
}
上面的代码块是声明要注入的依赖,第一行是编译libs目录下的所有jar包,除了我们compile的以外在libs目录下还有其他加入进来的jar包,我们要在compile其他注入的类库的同时compile libs目录下的文件。最后面的四行代码,第一行的debugCompile是指debug时才去编译,第二行releaseCompile是指打包的时候才去编译,第三行apt是指android-apt,它是一个AS的插件,可以指定代码编译时的配置,第四行provided是指只在编译时使用,不会将代码打进包中。
compileSdkVersion 23 编译时的SDK版本
buildToolsVersion '25.0.0'
编译工具的版本,需要跟AS同步更新,否则可能出现问题
defaultConfig {
默认配置
applicationId 'com.demo.android'
应用的包名
minSdkVersion 17 适配应用的最低SDK版本
targetSdkVersion 23 适配应用的目标SDK版本
versionCode 35 应用的版本号
versionName '2.9.0'
应用的版本名字
}
signingConfigs {
debug {
storeFile file("yintong_keystore_psd_yintong.keystore")
debug时的签名配置
storePassword "yintong"
密钥文件的密码
keyAlias "yintong" 密钥文件的别名
keyPassword "yintong"
密码
}
realse {
storeFile file("yintong_keystore_psd_yintong.keystore")
realase时的签名配置
storePassword "yintong" 密钥文件的密码
keyAlias "yintong" 密钥文件的别名
keyPassword "yintong"
密码
}
}
sourceSets { 目录指向配置
main {
manifest.srcFile 'AndroidManifest.xml' 指定AndroidManifest文件
java.srcDirs = ['src'] 指定source目录
resources.srcDirs = ['src'] 指定source目录
aidl.srcDirs = ['src'] 指定source目录
renderscript.srcDirs = ['src'] 指定source目录
res.srcDirs = ['res'] 指定资源目录
assets.srcDirs = ['assets'] 指定assets目录
jniLibs.srcDirs = ['libs'] 指定lib库目录
}
debug.setRoot('build-types/debug') 指定debug模式的路径
release.setRoot('build-types/release') 指定release模式的路径
}
还有一些其他的配置需要大家根据自己项目的需要实际去配置,基本的配置就是这些,哪里不准确还希望大家留言更正,谢谢。