Gradle常用配置和操作

生成Jar包

android{...}

task makeJar(type: Copy) {
    delete 'build/libs/syssdk.jar'
    from('build/intermediates/intermediate-jars/release/')//jar文件来源
    into('build/libs/')   //生成路径
    include('classes.jar')
    rename('classes.jar', 'syssdk.jar')  //命名为syssdk.jar
}

makeJar.dependsOn(build)

BuildType依赖配置不同环境和给不同环境配置不同参数(BASEURL)

android{
	defaultConfig {...}
	buildTypes {
        release {
            buildConfigField "String", "BASEURL", '"https://api.xxx.cn/xxx/"'
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }

        debug {
            buildConfigField "String", "BASEURL", '"https://dev-api.xxx.cn/xxx/"'
        }

        pre.initWith(debug)
        pre {
            buildConfigField "String", "BASEURL", '"https://test-api.xxx.cn/xxx/"'
            //如果依赖项没有pre的BuildType,按release、debug的优先级匹配
            matchingFallbacks = ['debug', 'release']
        }
}

支持Java8

android{
	defaultConfig {...}
	compileOptions {
        targetCompatibility JavaVersion.VERSION_1_8
        sourceCompatibility JavaVersion.VERSION_1_8
   	}
}

配置不同的layout布局文件夹和jniLibs

 sourceSets {
        main {
            res.srcDirs =
                    [
                            'src/main/res/layouts/loginuikit',
                            'src/main/res/layouts/homeuikit',
                            'src/main/res/layouts',
                            'src/main/res'
                    ]
            jniLibs.srcDirs = ['libs']
        }
 }

配置Maven上传lib到远程或者本地maven库

要上传的Module gradle文件

apply plugin: 'com.android.library'
android {...}
dependencies { ...}

group 'com.lib'
ext {
    artifactId = 'log'
}
def mavenFile = rootProject.file('push-maven.gradle')
if (mavenFile.exists()) {
    apply from: mavenFile
}

push-maven.gradle这个文件需要放到项目根目录下

apply plugin: 'maven'
if (project.hasProperty("android")) { // Android libraries
    android {
        lintOptions {
            abortOnError false
            ignoreWarnings true
        }
    }
    task sourcesJar(type: Jar) {
        classifier = 'sources'
        from android.sourceSets.main.java.srcDirs
    }
    task javadoc(type: Javadoc) {
        javadoc.options.setOutputLevel(JavadocOutputLevel.QUIET)
        source = android.sourceSets.main.java.srcDirs
        classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    }
} else { // Java libraries
    task sourcesJar(type: Jar, dependsOn: classes) {
        classifier = 'sources'
        from sourceSets.main.allSource
    }
}
task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}
artifacts {
    //archives javadocJar
    archives sourcesJar
}
def version = System.getProperty("version") ?: "" //gradlew :db:uploadArchives -D version=1.0.0-SNAPSHOT
def mavenUrl = version.contains("SNAPSHOT") ? "snapshot" : "release"
uploadArchives {
    repositories {
        mavenDeployer {
       		 //此处可以替换为本地地址 repository(url: uri("${rootProject.projectDir}/repo"))
            repository(url: "http://xxx.xxx.com/nexus/content/repositories/app-$mavenUrl/") {
                authentication(userName: "xxx", password: "xxx")
            }
            pom.version = "$version"
            pom.artifactId = "$artifactId"
            pom.groupId = "$project.group"
        }
    }
}

在terminal下执行:

gradlew :log:uploadArchives -D version=1.0.0-SNAPSHOT

上传lib到Maven库

在根目录下的build.gradle中添加你的远程maven库

buildscript {
    repositories {
        google()
        jcenter()
      // 添加本地maven地址配置
		maven {
    		url uri("${rootProject.projectDir}/repo")
		}
        maven {
            url "http://xxx.xxx.com/nexus/content/repositories/app-release/"
        }
        maven {
            url "http://xxx.xxx.com/nexus/content/repositories/app-snapshot/"
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.1'
    }
}
allprojects {
    repositories {
        google()
        mavenCentral()
        jcenter()
         maven {
            url "http://xxx.xxx.com/nexus/content/repositories/app-release/"
        }
        maven {
            url "http://xxx.xxx.com/nexus/content/repositories/app-snapshot/"
        }
    }
    gradle.projectsEvaluated {...}
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

然后就可以通过下面进行依赖:

 api 'com.lib:log:1.0.0-SNAPSHOT'

打包完成后自动修改包名

//自动修改apk报名
android {
	android.applicationVariants.all {
    	 variant ->
        	 variant.outputs.all {
           	    def apkName = "xxx_${buildType.name}"
            	outputFileName = apkName + "_${defaultConfig.versionName}_${defaultConfig.versionCode}" + "_${buildTime()}" + ".apk"
       	  }
	 }
}

def buildTime() {
    def date = new Date()
    def formattedDate = date.format('yyyyMMdd')
    return formattedDate
}

猜你喜欢

转载自blog.csdn.net/u011148116/article/details/106235421