Android安卓签名打包原理,步骤详细讲解(debug,release区别.V1,V2区别)
所有的Android应⽤程序都要求开发⼈员⽤⼀个证书进⾏数字签名,Android系统不会安装没有进⾏签名的应⽤程序。
在应⽤程序开发期间,由于是以Debug调试模式编译的,因此IDE(ADT)根据会⾃动⽤默认的密钥和证书来进⾏签名,⽽以Release发布模式编译时,apk⽂件就不会得到⾃动签名,这样就需要进⾏⼿⼯签名。
我们使⽤Android Studio 运⾏我们的app,⽆⾮两种模式:debug和release模式。
debug模式
debug模式使⽤⼀个默认的debug.keystore进⾏签名。
这个默认签名(keystore)是不需要密码的,它的默认位置在C:\Users<⽤户名>.Android\debug.keystore,如果不存在Android studio会⾃动创建它。
例如我的debug.keystore就在C:\Users\Administrator.android\debug.keystore。
release模式
在我们正式发布项⽬的时候是不能使⽤debug.keystore的。开发过程中我们也可以使⽤发布模式运⾏。可以通过如下设置:BuildVariants-Build Variant-debug/release
如果项⽬需要细分开发dev和⽣产pro版本,每个版本中都包含debug和release模式,可以这么设置:
就细分成四种模式:
release模式需要配置签名才能运⾏,这时就需要⼀个keystore
如果没有就需要创建,已经创建过keystore请跳过此步骤
Android Studio中apk签名打包步骤
1.创建keystore,并⽣成我们的apk(打包)
android获取真正的签名第⼀步: Build —>> Generate Signed APK
第⼆步:Create New···(已经创建过keystore选Choose existing···)
第三步:填写相关信息
设置keystore路径、密码,设置key:别名、密码、有效期,证书等
Key store path:存放路径
Key
Alias:别名
Validity(years):有效期(⼀般默认25年)
Certificate:证书
First and Last Name:姓名
First and Last Name:姓名
Organization Unit:组织单位
Organization:组织
City or Locality:城市或地区
State or Province:州或省
Country Code(XX):国家代码(XX),中国:86
第四步:输⼊key、keystore密码
第五步:选择发布app的路径,默认即可 选择release⽅式发布
OK,发布成功,可以到 刚才设置的⽬标⽂件夹下⾯到发布的apk
那对⼀些⼈来说,这样也太⿇烦了,每次都得输⼊相关信息,还得进⾏选择,那么有更简单快捷的⽅法吗?答案是有的。我们可以在项⽬的app⽬录下的adle中进⾏签名的配置。
Project structure-signing,输⼊已创建的keystore信息
使得签名⽣效需配置Build Types
点击OK即可,然后查看对应adle的配置⽂件应该是这样的。当然了,你也可以通过直接在adle⾥⾯写下⾯这段。
1 signingConfigs {
2 release {
3 keyAlias 'androiddebugkey'
4 keyPassword 'android'
5 storeFile file('C:/Users/ssc/.android/debug.keystore')
6 storePassword 'android'
7 }
8 }
9
10 ·········
11
12 buildTypes {
13 release {
//是否混淆
14 minifyEnabled false
//是否移除⽆⽤资源
15 zipAlignEnabled true
//混淆的配置⽂件
16 proguardFiles getDefaultProguardFile(''), 'proguard-rules.pro'
17 lease
18 }
19 }
上述的配置虽然配置简单,但是存在不安全性,假如你的项⽬是开源的,你把签名⽂件的配置密码之类的信息⽤明⽂写在adle⾥⾯,那是不是很不安全呢?
可以将签名⽂件的配置密码之类的信息直接写在local.properties下,因为在Git版本控制的项⽬中,我们可以看到我们项⽬project模式根⽬录下有⼀个.gitignore的⽂件,⾥⾯的配置⼤概如下所⽰
我们可以看到/local.properties,意思就是说local.properties默认是不添加到版本控制⾥⾯的,因为local.properties存储的是我们环境资源的⼀些相关信息,如sdk的路径。故我们可以在local.properties下配置签名信息⽽不⽤担⼼密钥外泄。对于开源项⽬来说,是⾮常好的。
在local.properties下直接添加相关信息
在adle⾥,为了不⽤明⽂显⽰,我们⾸先要获得key的相关配置,所以我们可以在app的adle⾥
android {}之上新增代码
adle下的signingConfigs可以改为:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论