Android Studio 打包Apk

开发完一款Application之后,需要对其进行打包,才可以发布工用户使用(release)。而Android Studio就具备了打包的工具。有一下两种打包方式:

  • Gradle配置打包

  • Build->Generate Signed APK打包

签名文件

在进行打包之前,首先需要一个签名文件。

eclipse的签名文件是以.ketstore为后缀的文件;Android Studio是以.jks为后缀的文件。

签名文件有几个要素

英文名称解释
keyStore密钥库路径
keyStore Password密钥库密码
keyAlias签名文件别名
keyPassword签名文件密码

默认签名文件

在开发阶段,用到第三方SDK新建应用项目时,需要签名KEY的SHA1。这里可以使用Android Studio自带的debug.keystore。

可以使用命令keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android在终端中直接获取到签名key的SHA1信息,如下图:

Android Studio默认key.png

~代表的是账户的根目录

对应要素:

要素名称
keystore~/.android/debug.keystore
keyStore passwordandroid
keyAliasandroiddebugkey
keyPasswordandroid

默认路径下的debug.keystore不存在时,会自动创建。如果修改了debug.keystore路径,并不会在新路径下自动创建debug.keystore文件。如果在默认路径创建一个不以debug命名的key,系统还是会自动创建该签名文件。所以只有使用默认路径,才会自动创建相应的key文件

参考

Android Studio获取调试包签名的SHA1值方法signing configurations(签名配置)

创建签名文件生成Apk文件

通过Build->Generate Signed APK,选择module然后next,点击creat new...选项创建一个新的key文件。如下图填写一些基本信息

签名信息.png

名称描述
key store path密钥库路径
password密钥库密码
confirm确认密码
alias别名
validity有效年限
first and last name名字
organization unit公司或组织
organization公司
city or locality
state or province市或洲
country code国家代码

然后点击next->选择Build Type->Finish。此时Apk文件就生成了,同时签名文件也生成在相应目录。
这里注意到,已经利用了Build->Generate Signed APK打包了Apk

参考 Android Studio 权威教程 打包、生成jks密钥、签名Apk、多渠道打包

打包

打包有两种方式,在介绍自定义签名文件时,已经实现了一种打包方式:Build->Generate Signed APK。那么来看看如何利用Gradle配置打包

Gradle 配置

配置签名文件

在build.gradle(module:app)中加入下面的代码

 signingConfigs {
        release {
            storeFile file("foolishdev.jks")
            storePassword "9445118798"
            keyAlias "foolishdev"
            keyPassword "9445118798"
        }
    }

这里要输入的信息都是之前创建签名文件时对应的四个要素的值。

配置Build Type

buile type{
        release {
            // 不显示Log
            buildConfigField "boolean", "LOG_DEBUG", "false"
            //混淆
            minifyEnabled true
            //Zipalign优化
            zipAlignEnabled true
            // 移除无用的resource文件
            shrinkResources true
            //加载默认混淆配置文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //签名
            signingConfig signingConfigs.release        }}

通过signingConfig signingConfigs.release来配置Build Type的签名信息。可以看到这里使用了Gradle配置签名文件时配置的Key。

其实android studio中module默认都会有debug和release两个buildType。debug用于开发时测试的版本,而release则是用来发布的版本。当然在这里也可以配置自定义的版本,并配置特有的签名文件。在Build Variants操作框中会生成该Build Type。

配置Build Variants

Build Variants.png

从上图操作框中可以看到,module的Build Variants中有两个Type,分别是debug和release。其中release是刚刚配置的Build Type。可以选择任意一个类型进行打包,并且他们会利用各自配置的Key进行打包。

注意到上面Build Type时并没有配置debug type,是Android Studio默认自带的。其中debug type使用的就是默认的签名文件(debug.keystore)。当然也可以在Build Type中配置debug Type并且配置自定义的debug key

生成Apk文件

当准备工作全部完成,执行 Run app或者Build->Build apk就会自动在module name/app/build/outputs/apk路径下生成Apk文件。

注意使用Build->Generate Signed APK生成Apk时,Apk文件生成目录和创建的Key文件目录相同

参考

Android tips(八)-->Android Studio打包apk,aar,jar包

进阶

不在Gradle中配置password

signingConfigs { //gradle assembleRelease  
    myConfig {  
        storeFile file("stone.keystore")  
        storePassword System.console().readLine("\nKeystore password: ")  
        keyAlias "stone"  
        keyPassword System.console().readLine("\nKey password: ")  
    }  }

这样在执行gradle 命令$ gradle assembleRelease时会被要求输入密码

参考 Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包



作者:狮_子歌歌
链接:https://www.jianshu.com/p/7e5b1bacc35c
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


评论 (0)

发表评论

上一篇: go 1.13 go env -w 设置GOPROXY报错 下一篇: 没有下一篇了