在本篇文章您将了解到两种生成正式签名的APK文件,当然还会了解到
gradle build
与
gradle assemble
的区别。
-
通过 Android Studio 生成
-
使用 Gradle 生成
前言
首先需要了解的是并不是所有的APK文件都能成功安装在手机上
,能够安装在Android手机上的应用都是带有签名的。可能有小伙伴有疑惑了:为什么通过Android Studio运行生成的应用程序好像没有进行过签名啊?那是因为,Android Studio 使用了一个默认的
keystore
文件帮我们自动进行了签名,可以在 Android Studio 中看到:
Gradle 面板——Tasks——android——signingReport,双击 signingReport,在控制台可以看到keystore 信息。
这就说明我们通过 Android Studio 运行的程序使用的都是这个 debug.keystore 文件来进行签名。
如果要想上架到应用商店,需要生成正式签名的 APK,那么问题来了,如何生成正式签名的APK 呢?本文将分享两种方法:
使用Android Studio生成正式签名的APK文件
点击 Android Studio 导航栏上的 Build——Generate signed APK ——选择APK——填写如下内容。如果没有 jks 文件的话,点击 Create new 即可生成新的。
其中 Validity(years)代表的是有效时长。具体信息可以添加如下内容
配置好信息之后,点击下一步选择release即可。
当点击Create后,右下角会有一个提示框:APK(s) generated successfully。当我们运行demo生成release版本时,该demo就是一个带有正式签名的APK文件。
使用Gradle生成正式签名的APK文件
在 testapp2 项目下的
build.gradle
文件中添加
signingconfigs闭包
,并在release闭包中使用。signingconfigs闭包中添加了一个
config闭包
,其中配置了
keystore
文件的各种信息,其中,
storeFile
用于指定keystore文件的位置(文件必须已存在);
storePassword
用于指定密码,
keyAlias
用于指定别名,
keyPassword
用于指定别名密码。
android {
namespace 'com.example.testapp2'
compileSdk 34
defaultConfig {
# 此处省略
}
signingConfigs {
config {
storeFile file('/Users/zeng/zeng.jks')
storePassword '123456'
keyAlias 'Zeng'
keyPassword '123456'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
}
因为我们在 buildTypes下面的 release 闭包中应用了添加的签名配置,这样当生成正式版APK文件的时候就会自动使用配置的签名信息来进行签名。赶紧生成一个带有签名的 APK 试试吧。运行下面的命令生成 apk。
gradlew :testapp2:assembleRelease
#或者
gradlew :testapp2:build
#或者
gradlew :testapp2:assemble
可能小伙伴又有疑问了?
gradlew build
与
gradlew assemble
有什么区别。
相同点:
两者在执行命令后,都会生成debug和release包。
不同点:
-
gradlew build
:是一个通用的构建命令,将执行项目的整体构建过程。会编译源代码,运行单元测试,处理器资源文件,最终生成可运行的应用程序包。
-
gradlew assemble
: 用于执行构建过程的部分步骤,主要是打包生成可执行文件(如APK)。与 gradlew build 不同,gradlew assemble只执行构建过程的部分流程,跳过了编译源代码和运行单元测试等步骤。它可以指定特定的构建变体,例如 gradlew assembleDebug 或 gradlew assembleRelease ,来单独构建指定的变体而非构建所有变体。
别忘记一键三连哦