Imfondof 2017-10-13
Android系统会将所有的APK文件识别为应用程序的安装包,类似于windows系统上的exe文件。
android系统要求安装到手机的APK必须进行签名,但是我们直接使用AS在手机上进行测试的时候似乎没有经过签名操作,那是因为AS来运行程序的时候使用了一个默认的keystore文件帮助我们进行签名,那么默认的签名文件你可以点击工具栏Gradle—>项目名—>Tasks—->android
双击signingReport,运行结果如图所示
所以可以看到我的签名文件在 C:\Users\welive\.android\debug.keystore
去看一下:
正式签名
1.使用AndroidStudio进行生成
Build—>Gencrate Signed APK 来生成正式签名的APK
之后的操作按照提示进行:在最后一步
选择 release正式版本,这样生成的APK便是正式签名下的正式版本了。在你 Folder下的路径下就可以看到。
使用Gradle进行签名
Gradle是一个非常先进的项目构建工具,在androidStudio中开发所有项目都是使用Gradle进行构建的。在之前的项目中。
想要精通Cradle,难度较大,不亚于重新学习一门语言。(Gradle是使用Groovy语言编写的),而我们目前只需要做到使用Gradle进行项目构建就好了。
使用Gradle生成带有签名的APK文件,点击app文件目录下的build.gradle
文件如下:
上面这个秘钥是我自己随便创建的,如果雷同,纯属巧合。
在文件中添加一个闭包
signingConfigs { config { keyAlias 'wedfrend' keyPassword '123456' storeFile file('H:/wedfrend.jks') storePassword '123456' } }
然后我们要对其进行应用:
这里我将其引用两次,也就是说正式签名的 秘钥和测试签名的秘钥是一致的。
关键在:
正式编译的配置文件
release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.config }
测试编译的配置文件
debug { signingConfig signingConfigs.config }
配置完成之后我们如何生成APK,打开AS的工具栏Gradle/app/tasks/build
双击:assembleDebug ———->测试 APK
双击:assembleRelease ———->正式APK
所以目前我们的生成APK两种方式都使用完成。
当然,对应Gradle的秘钥配置,AS提供可视化的简单操作:
项目文件—>右键—>选择Open Module settings
可以查看到这个界面:
点击Signing
:
我添加了一个名为 config
的秘钥,并填写相应的信息,这个就对用了app/build.gradle文件的signingConfigs
里面的闭环。
然后在点击Buile Types
:
左边有两个可选的: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文件,他是专门用来配置全局键值对数据的,那么现在我们在该文件下配置:
然后修改app/build.gradle如下:
这样一来,在build.gradle中就无法正查看秘钥信息,对于我们 第三方版本控制的时候只需将本地的gradle.properties保存好就行,只需在内部传播就好了。