android中签名,构建,打包等相关知识

1.生成.jks或者.keystore文件

.keystore和.jks文件都是用于android签名的,.keystore适用于eclipse签名的,.jks用于androidstudio中使用的

1.生成.keystore 文件

打开终端:

 keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore 
  • keytool是工具名称,-genkey意味着执行的是生成数字证书操作,-v表示将生成证书的详细信息打印出来,显示在dos窗口中
  • -alias demo.keystore表示证书的别名为“ demo.keystore”,当然可以不和上面的文件名一样
  • -keyalg RSA 表示生成密钥文件所采用的算法为RSA
  • -validity 40000 表示该数字证书的有效期为40000天,意味着40000天之后该证书将失效
  • -keystore demo.keystore 表示生成的数字证书的文件名为“demo.keystore ”

2.生成.jks文件

生成.jks文件有两种方式,但原理都是一样

  • 1. 在androidstudio中使用自带的工具生成

在androidstudio中点击Build -> Generate Signed Apk -> create new key store 即可

  • 2.使用keytool生成

keytool -genkey -v -keystore release.jks -keyalg RSA -keysize 2048 -validity 10000 -alias ucall_release

配置完成所有信息即可,生成.jks文件后,他会提示使用行业标准格式,后面会提示使用下面的命令:

keytool -importkeystore -srckeystore release.jks -destkeystore release.jks -deststoretype pkcs12

在命令行执行即可,则生成了我们需要的.jks文件


2.android studio中的相关

1.使用gradle进行构建项目

  • a.在buildType中配置signingConfigs

signingConfigs中的配置是主要是为了配置签名包的信息.但是我们的项目是要放到项目托管网站上的话,这样一来项目的签名信息和签名文件就暴露了。所以我们只能本地使用签名文件,配置信息也只能从另一个文件中加载出来。

1.创建signing.properties保存签名信息

在项目的app目录下创建一个signing.properties文件,在里面配置签名信息:

KEYSTORE_FILE = ..\\sign\\release.jks
KEY_ALIAS = ucall_release
KEYSTORE_PWD= fhit123!@#
KEY_PWD= fhit123!@#

DEBUG_KEYSTORE= C\:\\Users\\summer\\.android\\debug.keystore
DEBUG_ALIAS= androiddebugkey
DEBUG_KEYSTORE_PWD= android
DEBUG_KEY_PWD= android

注:KEYSTORE_File和DEBUG_KEYSTORE分别代表正式的签名文件和Debug的签名文件,根据两个文件的路径可以自行更改 ,一般情况下:debug.keystored都位于 C:\Users\summer.android\debug.keystore

2.在app\build.gradle中引入signing.properties文件,并配置signingConfigs

在build.gradle文件中android{}外部添加:

//加载signing.properties文件
Properties props = new Properties()
props.load(project.rootProject.file('app/signing.properties').newDataInputStream())

然后就可以在android{}中配置:

signingConfigs {
        release {//发布版本的签名配置
            storeFile file(props['KEYSTORE_FILE'])
            keyAlias props['KEY_ALIAS']
            storePassword props['KEYSTORE_PWD']
            keyPassword props['KEY_PWD']
            v1SigningEnabled true
            v2SigningEnabled true
        }
        debug {//调试版本的签名配置
            storeFile file(props['DEBUG_KEYSTORE'])
            keyAlias props['DEBUG_ALIAS']
            storePassword props['DEBUG_KEYSTORE_PWD']
            keyPassword props['DEBUG_KEY_PWD']
            v1SigningEnabled true
            v2SigningEnabled true
        }
    }
3.修改.gitignore

在项目根目录下的.gitignore中将signing.propeties和release.jks文件添加进来,这样就能保证这两个文件不会被上传到项目托管网站上去.

  • b.在buildType中配置debug和release配置

现在需要将签名配置生效,需要在buildTypes中将signingConfigs中的配置引入,故要在module中的build.gradle文件中的android{}中添加以下代码:

 buildTypes {
        release {
            debuggable true
            minifyEnabled true //启用Proguard
            shrinkResources true //是否清理无用资源,依赖于minifyEnabled
            zipAlignEnabled true //是否启用zipAlign压缩
            signingConfig signingConfigs.release//引用signingConfigs中release的配置
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        debug {
            debuggable true
            minifyEnabled false  //不启用Proguard
            shrinkResources false //是否清理无用资源,依赖于minifyEnabled
            zipAlignEnabled false //是否启用zipAlign压缩
            signingConfig signingConfigs.debug//引用signingConfigs中debug的配置
        }
    }

这样一来在打包的时候就可以生成我们的签名包了,当然在android{}中还有其他的配置,如productFlavors{},这可以增加生成的apk的多样性,如针对不同的渠道的配置等等,以后会有专门写一篇文章介绍productFlavors的,这里就不展开讲了

2.使用gradle进行打包

我们常用的打包方式是,点击build->generate signed apk的方式,然后再选择一个buildVariant即可。

但是有了gradle工具之后就非常方便了,gradle工具提供了非常便捷的方式,
在Android studio的侧边栏上点击gradle,找到你要进行打包的module,点击Tasks,再点击build,会发现里面会有clean,assembleDebug和assembleRelease等等(如果没有找到,就去Tasks\other里面去找),当然,如果你配置了productFlavors的话,名字就不一样了,格式是assembleXXXDebug或者assembleXXXRelease。首先双击clean,clean完成后,双击你想要的生成版本,比如点击assembleRelease,会在module的build\outputs\apk目录下看到相应的apk文件了

另外,当我们点击运行的按钮时,androidstudio做了什么事呢?

其实,就是通过你选择的一个buildVariant进行构建,在module中的build\outputs\apk目录中生成apk文件,然后通过adb install 命令将该apk安装到设备上

adb install release.apk

另外在使用gradle构建时,可以使使用混淆和build缓存等方式加快构建速度,详情参考链接:
https://mp.weixin.qq.com/s/AyBkfNL_vodQVLgaZOD6kQ

你可能感兴趣的:(android)