AndroidStudio生成正式签名APP

Imfondof 2017-10-13

Android系统会将所有的APK文件识别为应用程序的安装包,类似于windows系统上的exe文件。

android系统要求安装到手机的APK必须进行签名,但是我们直接使用AS在手机上进行测试的时候似乎没有经过签名操作,那是因为AS来运行程序的时候使用了一个默认的keystore文件帮助我们进行签名,那么默认的签名文件你可以点击工具栏Gradle—>项目名—>Tasks—->android

AndroidStudio生成正式签名APP

双击signingReport,运行结果如图所示

AndroidStudio生成正式签名APP

所以可以看到我的签名文件在 C:\Users\welive\.android\debug.keystore去看一下:

AndroidStudio生成正式签名APP

正式签名

1.使用AndroidStudio进行生成

Build—>Gencrate Signed APK 来生成正式签名的APK

AndroidStudio生成正式签名APP

之后的操作按照提示进行:在最后一步

AndroidStudio生成正式签名APP

选择 release正式版本,这样生成的APK便是正式签名下的正式版本了。在你 Folder下的路径下就可以看到。

使用Gradle进行签名

Gradle是一个非常先进的项目构建工具,在androidStudio中开发所有项目都是使用Gradle进行构建的。在之前的项目中。

想要精通Cradle,难度较大,不亚于重新学习一门语言。(Gradle是使用Groovy语言编写的),而我们目前只需要做到使用Gradle进行项目构建就好了。

使用Gradle生成带有签名的APK文件,点击app文件目录下的build.gradle文件如下:

AndroidStudio生成正式签名APP

上面这个秘钥是我自己随便创建的,如果雷同,纯属巧合。

在文件中添加一个闭包

signingConfigs {
        config {
            keyAlias 'wedfrend'
            keyPassword '123456'
            storeFile file('H:/wedfrend.jks')
            storePassword '123456'
        }
    }

 然后我们要对其进行应用:

AndroidStudio生成正式签名APP

这里我将其引用两次,也就是说正式签名的 秘钥和测试签名的秘钥是一致的。

关键在:

正式编译的配置文件

release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
        }

 测试编译的配置文件

debug {
            signingConfig signingConfigs.config
        }

 配置完成之后我们如何生成APK,打开AS的工具栏Gradle/app/tasks/build

AndroidStudio生成正式签名APP

双击:assembleDebug ———->测试 APK

双击:assembleRelease ———->正式APK

所以目前我们的生成APK两种方式都使用完成。

当然,对应Gradle的秘钥配置,AS提供可视化的简单操作:

项目文件—>右键—>选择Open Module settings

可以查看到这个界面:

AndroidStudio生成正式签名APP

点击Signing

AndroidStudio生成正式签名APP

我添加了一个名为 config的秘钥,并填写相应的信息,这个就对用了app/build.gradle文件的signingConfigs里面的闭环。

然后在点击Buile Types:

AndroidStudio生成正式签名APP

左边有两个可选的:debug表示测试版本应用的秘钥,然后在右边的Signing Config点击选择一个秘钥,在app/build.gradle中对应

debug {
            signingConfig signingConfigs.config
        }

 同样,release对应的是正式版本,对应

release {
             ···
            signingConfig signingConfigs.config
        }

 只是在这个实例中我使用的同一个秘钥而已,当然你也可以在项目中测试和正式的秘钥不同,但是在实际开发中,外界原因我们有时候还真的需要秘钥一致,比如接入微信支付的应用,你的秘钥如果测试和正式不同,那么在测试的APK中永远都是不可能成功调起微信支付的。


最后的啰嗦:

目前keystore的文件信息都是以明文的形式直接配置在build.gradle中,这样按道理讲不安全,android推荐是将这类敏感的数据配置在一个独立的文件里面,然后在build.gradle中读取这些数据。

我们按照这种思路再来一遍:

androidStudio项目的根目录下有一个gradle.properties文件,他是专门用来配置全局键值对数据的,那么现在我们在该文件下配置:

AndroidStudio生成正式签名APP

然后修改app/build.gradle如下:

AndroidStudio生成正式签名APP

这样一来,在build.gradle中就无法正查看秘钥信息,对于我们 第三方版本控制的时候只需将本地的gradle.properties保存好就行,只需在内部传播就好了。

相关推荐