Gradle 目录下 - wrapper - gradle-wrapper.properties
Plugin version / Gradle version
2.1.3 - 2.2.3 2.14.1+
2.3.0+ 3.3+
3.0.0+ 4.1+
3.1.0+ 4.4+
apply plugin: 'com.android.application'
apply plugin: 'com.android.library'
//使用了 com.android.application 插件 ,该插件用于编译 Android 应用。
apply plugin: ‘com.android.application’
//com.android.library,该插件用于编译Android lib
apply plugin:‘com.android.library’
描述了 gradle所引入的插件
gradle的解析顺序:rootproject 的setting.gradle,然后是rootproject的build.gradle,然后是各个subproject。所以project下的build.gradle会先于app下的build.gradle。
compileSdkVersion 26 //告诉 Gradle 用哪个 Android SDK 版本编译你的应用
它纯粹只是在编译的时候使用
buildscript和allprojects的作用和区别
allprojects声明的却是你所有module所需要使用的资源
repositories
顾名思义就是仓库的意思啦,而jcenter()、maven()和google()就是托管第三方插件的平台
dependencies
当然配置了仓库还不够,我们还需要在dependencies{}里面的配置里,把需要配置的依赖用classpath配置上,因为这个dependencies在buildscript{}里面,
如果要引入网上仓库里面的依赖,我们需要这样写compile group:‘com.squareup.okhttp3’,name:‘okhttp’,version:‘3.0.1’,当然这样是最完整的版本,缩写就把group、name、version去掉,然后以":"分割即可。
compile ‘com.squareup.okhttp3:okhttp:3.0.1’
/*
gradle 3.0中依赖implementation、api的区别:
其实api跟以前的compile没什么区别,将compile全部改成api是不会错的;
而implementation指令依赖是不会传递的,也就是说当前引用的第三方库仅限于本module内使用,其他module需要重新添加依赖才能用,下面用两个图说明:
*/
如果项目引用的so库不全,只有某个库那么需要做如下修改,引入指定的库
ndk {
abiFilters "armeabi-v7a", "x86"
}
打包Jar 可以通过from指定要打包的目录文件就是.class文件
####注意
一定要依赖于build 否则打出来的jar包就是空的
在过滤打包字节码文件时,被删除的文件可以被其他类引用,但不要被调用或初始化,否者就会报错
/**在终端手动调用的时候才会执行 ./gradlew releaseJar*/
task releaseJar << {
println('***创建jar包***')
}
task buildJar(type: Jar, dependsOn: ['build']) {
//指定生成的jar名
baseName 'JCSDK'
//从哪里打包class文件
from('build/intermediates/classes/release/com/juphoon/cloud/')
//打包到jar后的目录结构
into('com/juphoon/cloud/')
//去掉不需要打包的目录和文件
exclude('BuildConfig.class', 'R.class', 'R$*.class')
}
// 运行该task将JCSDK.jar放到TestCloud的libs中
task copyJar(type: Copy, dependsOn: ['buildJar']) {
from('build/libs/')
into('../sdk/cloud/')
}
(11 sloc) 783 Bytes
//
//当你的程序需要引用两个及以上的module library或者其他的jar包是出现错误类型如下
//Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
// > com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK org/apache/log4j/xml/log4j.dtd
//File1: /Users/minyuchun/androidwork/projectstudio/StarFaceFrame/app/build/intermediates/exploded-aar/StarFaceFrame/facelibrary/unspecified/jars/classes.jar
//File2: /Users/minyuchun/androidwork/projectstudio/StarFaceFrame/app/build/intermediates/exploded-aar/StarFaceFrame/rylibrary/unspecified/jars/classes.jar
android{
packagingOptions{
exclude 'org/apache/log4j/xml/log4j.dtd'
}
}