1.gradle构建的产物,称为构件。可以为jar,zip或者war等。
可以使用下面的代码进行构建,并运行命令 gradlew uploadArchives
apply plugin: "java"
task publishJar(type:Jar)
artifacts{
archives publishJar
}
//def publishFile=file('build/buildile')
//artifacts{
// archives publishFile
//}
version '1.0.0'
uploadArchives{
repositories{
flatDir{
name 'libs'
dirs "$projectDir/libs" //生成的仓库指定到当前的根目录下的libs文件夹下
}
//添加mavenLocal(),生成的文件也会发布到本地仓库。生成的jar包在C:\Users\Administrator\.m2中找到
mavenLocal()
//在这里也可以发布到服务器中
mavenDeployer{
repository(url:"http:xxxxx"){
authentication(username:"username",password:"pwd")
}
snapshotRepository(url:"http:xxxxx"){
authentication(username:"username",password:"pwd")
}
}
}
}
2.android gradle插件的分类
android有3类插件
App插件:com.android.application android{}就是application的扩展类型。
Library插件:com.android.library
Test插件:com.android.test
android gradle工程的配置,都是在android{}中,这是唯一的入口。通过它可以对android gradle的工程进行自定义配置。
compileSdkVersion的写法有好多种:
compileSdkVersion 23
compileSdkVersion "android-23"
android.compileSdkVersion =23
android.compileSdkVersion="android-23"
defaultConfig,是一个ProductFlavor产品渠道。
3.buildTypes是一个域对象,有release,debug等
如果在buildTypes中添加类型,那么就需要进行配置签名,否则就会报错不能运行
需要配置签名
如果出现构建的问题,那么就需要按照以下处理
每个BuildType都生成一个SourceSet,所以新的BuildType名字不能是main和androidTest,因为这两个已经被占用,同时每个BuildType名字不能相同。
并且每个BuildType还会产生相应的assemble任务,比如assembleRelease和assembleDebug等,这样就会执行响应的任务从而产生不同的apk。
可以使用下面命令生成apk
gradle assemble 生成所有的apk
gradle assembleRelease 生成release的apk
gradle assembleDebug 生成debug的apk
此外BuildType还有其他的属性
debuggable :用于配置是否生成一个可供调试的apk
jniDebuggable:
minifyEnabled:
multiDexEnabled:
proguardFiles:
shrinkResources:用于配置是否自动清理未使用的资源,默认为false
signingConfig:
zipAlignEnabled: //进行对齐压缩处理
https://blog.csdn.net/droyon/article/details/77870619
4.混淆
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
使用混淆文件,默认提供两种,一个是没有优化的,一个是经过优化的。