生成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
}