手动打包签名
-
Build—>Generate Singned Bundle or APK—>APK Next
-
选择你的密钥,填入key和两个密码,Next
-
选择Build Variants,签名版本(V1必选,V2可选),Finish
AS就会开始帮我们打包,打包成功后,右下角会有提示:
APK(s) generated successfully for module 'app' with 1 build variant:
Build variant 'xiaomiRelease': locate or analyze the APK.
点击locate,就可以直接访问文件夹找到打包签名完毕后的APK。
自动打包签名
AS设置签名
可以如下图使用 AS设置签名,点击apply后自动在Gradle中生成代码。
也可以自己复制添加签名代码。
android {
...
signingConfigs {
sing {
storeFile file('your.jks')
storePassword 'storePassword'
keyAlias = 'keyAlias'
keyPassword 'keyPassword'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.sing
}
debug {
signingConfig signingConfigs.sing
}
}
...
}
一键打包
如果我们的app配置了多渠道。我们可以:
Gradle—>app—>build—>assemble+渠道名—>双击Run
即可自动打包对于渠道的APK。
也可以如下图,一键Run打包所有渠道的APK,简单省事。
自定义出输出路径,apk文件名
注意:
- 文件名中不能出现/字符,否则会被分割成文件名。
- 文件名中不能包含一些特殊字符如冒号(中文英文冒号都不行),编译会报错。
android {
...
applicationVariants.all { variant ->
//release包才执行
if (variant.name != "release") return
variant.outputs.all() { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
//打包时间 yyyy-MM-dd HH:mm
def formattedDate = new Date().format('MM-dd_HH.mm')
// 自定义文件名
outputFileName = "App-${variant.flavorName}-${variant.buildType.name}_v${defaultConfig.versionName}(${formattedDate}).apk"
// 自定义输出路径
variant.getPackageApplication().outputDirectory = new File(rootDir.absolutePath + "/app/apks")
}
}
}
}
Gradle 7.0+
API ‘variant.getPackageApplication()’ is obsolete and has been replaced with ‘variant.getPackageApplicationProvider()’.
//把getPackageApplication()改成getPackageApplicationProvider().get()即可.
// 自定义输出路径
variant.getPackageApplicationProvider().get().outputDirectory = new File(rootDir.absolutePath + "/app/apks")