如何优雅的给你的APK文件打上签名

历经千兴万苦开发Android应用后,将这个应用打包成APK文件发布到应用商店就可以让用户下载安装到他们的手机上。当然,不是所有的APK都能安装到手机上,Android系统要求只有签名后的APK文件才可以安装,因此我们还需要对生成的APK文件进行签名才行。
在开发时,Android Studio使用了一个默认的keystore文件帮我们自动进行了签名,点击Android Studio右侧工具栏的Gradle→项目名→:app→Tasks→android,双击signingReport,结果如下:

默认keystore文件

通过通过Android Studio来运行的程序都是使用了这个debug.keystore文件来进行签名的,所以开发的应用程序能直接安装在模拟器上或是测试用机上,但对于要正式发布的Android应用来说,用正式的keystore文件来签名才显得得体表情(一本正经的胡说八道)
说到这里,那么如何给你的APK文件来个优雅的签名?表情

用吃饭家伙签名(Android Studio)

既然Android Studio能使用默认的keystore文件自动给APK文件签名,那它也可以用来生成正式的keystore文件来给APK文件签名。
点击Android Studio导航栏上的Build→Generate Signed Bundle/APK,选择APK选项,点击OK,则会弹出下面的对话框:

还没有正式的keystore文件,点击Create new按钮,会弹出新的对话框,然后在这个对话框填写必要信息就可以了

在Validity那一栏填写的是keystore文件的有效时长,单位是年,一般建议时间可以填得长一些。
完成之后点击OK,回到上层对话框,刚才填写的信息会填充到创建签名APK的对话框中。点击Next,会出现下面的对话框:

选择APK输出目录以及Build Version,点击Finish就可以了,等一会就可以在输出目录下找到这个APK文件,这个APK文件就是带有正式签名的。

还是用吃饭家伙签名(Gradle)

Android Studio很强大,可以帮我们给APK签名,当然,Gradle也可以这么做,要用Gradle生成带有正式签名的APK文件需要在app/build.gradle文件中的android闭包中添加如下内容:

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "cn.chenjianlink.android.coolweather"
        minSdkVersion 23
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    signingConfigs {
        config {
            storeFile file('C:/Users/Administrator/Documents/chenjian.jks')
            storePassword '123456'
            keyAlias 'chenjiandev'
            keyPassword '123456'
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
        }
    }
}
  • 在android闭包中添加了一个signingConfigs闭包,然后在signingConfigs闭包中又添加了一个config闭包。接着在config闭包中配置keystore文件的各种信息,storeFile用于指定keystore文件的位置,storePassword用于指定密码,keyAlias用于指定别名,keyPassword用于指定别名密码。
  • 在buildTypes下面的release闭包中应用了刚才添加的签名配置,这样当生成正式版APK文件的时候就会自动使用刚才配置的签名信息来进行签名了

build.gradle文件已经配置完成,接下来点击右侧工具栏的Gradle→项目名→:app→Tasks→build

assembleDebug用于生成测试版的APK文件,assembleRelease用于生成正式版的APK文件,assemble用于同时生成测试版和正式版的APK文件。在生成APK之前,先要双击clean这个Task来清理一下当前项目,然后双击assembleRelease,这样APK文件会自动生成在app/build/outputs/apk目录下

目前keystore文件的所有信息都是以明文的形式直接配置在build.gradle中的,这样就不太安全。Android推荐的做法是将这类敏感数据配置在一个独立的文件里面,然后再在build.gradle中去读取这些数据。Android Studio项目的根目录下有一个gradle.properties文件,它是专门用来配置全局键值对数据的,将相关信息写入这个文件中,然后在build.gradle文件中引用

KEY_PATH=C:/Users/Administrator/Documents/chenjian.jks
KEY_PASS=123456
ALIAS_NAME=chenjiandev
ALIAS_PASS=123456
android {
    ...
    signingConfigs {
        config {
            storeFile file(KEY_PATH)
            storePassword KEY_PASS
            keyAlias ALIAS_NAME
            keyPassword ALIAS_PASS
        }
    }
    ...
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务