在gradle3.2.1升级后(具体哪个版本改的记不清楚了),打包方式有所变化,这里对新的打包方式做个整理,顺便记录整个打包过程:
代码如下:
android{
signingConfigs {
debug {
keyAlias 'test'
keyPassword 'test'
//这个目录是跟build.gradle同一个目录下的意思,其它路径的话可以使用相对路径或者绝对路径
storeFile file('test.jks')
storePassword 'isports'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug//配置签名文件
}
debug{//debug这个可以不写,默认就有,默认使用Android自身默认签名
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug//配置签名文件
}
}
// 这是3.2.1之前的打包方式
// android.applicationVariants.all { variant ->
// variant.outputs.all { output ->
// def outputFile = output.outputFile
// def fileName
// if (outputFile != null && outputFile.name.endsWith('.apk')) {
// if (variant.buildType.name.equals('release')) {
// //里修改apk文件名
// fileName = "iSports${defaultConfig.versionName}.${releaseTime()}." + ENVIRONMENT + ".apk"
// } else if (variant.buildType.name.equals('debug')) {
// fileName = "app-debug.apk"
// }
// outputFileName = "${fileName}"
// }
// }
// }
//这是3,.2.1之后的签名方式
android.applicationVariants.all { variant ->
//判断是release还是debug版本
def buildType = variant.buildType.name
//获取渠道名称
// def channel = variant.productFlavors[0].name
def fileName//获取当前时间的"YYYY-MM-dd"格式。
def createTime = new Date().format("YYYY-MM-dd", TimeZone.getTimeZone("GMT+08:00"))
//println variant.getPackageApplicationProvider().outputFile
//def output = variant.outputFile()
variant.outputs.each {
if (buildType == "release") {
variant.getPackageApplicationProvider().get().outputDirectory = new File("E:" + "/apks/${buildType}/${createTime}")
fileName = "_v${variant.versionName}_${createTime}_${buildType}.apk"
//it.outputFile = new File(it.outputFile.parent, fileName)
it.outputFileName = fileName
}else {
variant.getPackageApplicationProvider().get().outputDirectory = new File("E:" + "/apks/${buildType}/${createTime}")
fileName = "app-debug.apk"
it.outputFileName = fileName
}
}
}
}
代码写完后有三种方式进行打包
- 通过在左侧的Build Variants面板改变app的Active Build Variant为release,然后重新Build,重新Build方式在顶部操作栏中Build->Rebuild Project(这种方式比较慢),或者在顶部操作栏中Build->Build Bundle(s)/APK(s)->Build APK(s)方式进行编译,截图如下:
- 通过在Android Studio的终端Terminal执行gradle命令
gradlew assembleRelease
3、通过右侧Gradle面板的快捷命令操作进行打包,命令具体位置在于Gradle-><项目名>-><项目名>->Tasks->other->assembleRelease。点击该选项即可执行。截图如下: