方法一: build----->generate signed APK,弹出对话框
如果有签名文件,选择签名文件,如果没有,则点击Create new创建,输入密码和别名,点击Next,选择APK生成的路径,signature versions:我选择V2,然后点击Finish开始打包。
这种方式打包出来的apk在自定义的路径里。
方法二: 在build.gradle中配置:
signingConfigs{
release {
storeFile file("../qwerr4k.jks")
storePassword "asdfgh"
keyAlias "qwerr4k"
keyPassword "asdfgh"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
点击右侧工具栏的Gradle->项目名->:app->Tasks->build
assemble 用于生成测试版和正式版的apk
assembleDebug 用于生成测试版apk
assembleRelease 用于生成正式版apk
apk自动生成在app/build/outputs/apk目录, debug版本在debug目录下,release版本在release目录下。
不在Gradle中配置password
signingConfigs { //gradle assembleRelease
myConfig {
storeFile file("../qwer4k.jks")
storePassword System.console().readLine("\nKeystore password: ")
keyAlias "qwer4k"
keyPassword System.console().readLine("\nKey password: ")
}
}
这样在执行gradle 命令$ gradle assembleRelease
时会被要求输入密码
三,修改APK的默认名称
在build.gradle的android{}中加入
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 这里修改apk名称
def fileName = outputFile.name.replace("app", "xxoo_${defaultConfig.versionName}.${defaultConfig.versionCode}")
outputFileName = new File(outputFile.parent, fileName)
}
}
}
gradle sync时报如下错误:
修改方法:
将
outputFileName = new File(outputFile.parent, fileName)中的路径去掉改成
outputFileName = new File("", fileName)即可,编译出来的apk存放路径与没改名字前一致。
Tips: new File(output.outputFile.parent, "app_${defaultConfig.applicationId }_"+ buildType.name + "_v${defaultConfig.versionName}-${releaseTime()}.apk");
①output.outputFile.parent表示生成apk的路径,这个是默认路径在项目/app/build/outpus/apk,当然我们可以自己写路径。
②defaultConfig.applicationId表示defaultConfig标签下的名称。
③buildType.name指编译类型,就是debug或者release
④defaultConfig.versionName表示在defaultConfig标签下写的版本号