【Android Studio】代码混淆与多渠道打包(二)

来源:互联网 发布:网络机顶盒apk 编辑:程序博客网 时间:2024/06/07 23:46

上篇介绍了代码混淆,这篇回顾一下多渠道打包,首先我们要了解的是应用为什么需要签名?
开发Android的人这么多,完全有可能大家都把类名,包名起成了一个同样的名字,这时候如何区分?签名这时候就是起区分作用的。
由于开发商可能通过使用相同的Package Name来混淆替换已经安装的程序,签名可以保证相当名字,但是签名不同的包不被替换。
APK如果使用一个key签名,发布时另一个key签名的文件将无法安装或覆盖老的版本,这样可以防止你已安装的应用被恶意的第三方覆盖或替换掉。
这样签名其实也是开发者的身份标识。交易中抵赖等事情发生时,签名可以防止抵赖的发生。
我们知道Eclipse中用于签名的文件是.keystore文件,在调试时用的debug.keystore,这是应用程序默认的签名文件,这个文件存在C:\Users\pc-名字.android中。这个文件当然可以迁移到android studio中,android studio可以生成.jks文件来对应用签名。这个跟.keystore作用是一样的。这时候大家就会问了,这个keystore文件是干什么用的呢?问的好,我们当然要知道其所以然.
Keytool 是一个有效的安全钥匙和证书的管理工具.
Java 中的 keytool.exe (位于 JDK\Bin 目录下)可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中的一条证书包含该条证书的私钥,公钥和对应的数字证书的信息。证书库中的一条证书可以导出数字证书文件,数字证书文件只包括主体信息和对应的公钥。
Keytool 把钥匙和证书储存到一个keystore.默任的实现keystore的是一个文件.它用一个密码保护钥匙.
(2)
关于证书的几个概念:
一个证书是一个实体的数字签名,还包含这个实体的公共钥匙值.
公共钥匙 :是一个详细的实体的数字关联,并有意让所有想同这个实体发生信任关系的其他实体知道.公共钥匙用来检验签名;
数字签名:是实体信息用实体的私有钥匙签名(加密)后的数据.这条数据可以用这个实体的公共钥匙来检验签名(解密)出实体信息以鉴别实体的身份;
签名:用实体私有钥匙加密某些消息,从而得到加密数据;
私有钥匙:是一些数字,私有和公共钥匙存在所有用公共钥匙加密的系统的钥匙对中.公共钥匙用来加密数据,私有钥匙用来计算签名.公钥加密的消息只能用私钥解密,私钥签名的消息只能用公钥检验签名。
实体:一个实体可以是一个人,一个组织,一个程序,一台计算机,一个商业,一个银行,或其他你想信任的东西.
实际上,我们用[1]中的命令已经生成了一个自签名的证书,没有指定的参数都使用的是默认值。
大家注意加粗字体就明白了。
下面就开始正题了,多渠道打包,我们就用友盟来做为例子来讲吧。
渠道信息一般在 AndroidManifest.xml中修改以下值:

<meta-data    android:name="UMENG_CHANNEL"    android:value="${UMENG_CHANNEL_VALUE}" />其中[UMENG_CHANNEL_VALUE: "XXXX"]就是对应${UMENG_CHANNEL_VALUE}的值。productFlavors {baidu {}c360 {}uc {}productFlavors.all { flavor ->flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]    }}
这段代码在build.gradle文件中,分配多种渠道。我这里随便写了几个。
0 0
原创粉丝点击