00:00
好,哎,这呢给大家先讲一下这个关于多渠道打包的这个内容啊,这个打开以后的话呢,有这样的几个文件目录啊,一个呢是这个叫tos,一会我们要说的这个多渠道打包的其中两种方式啊,用的这里边这个测试啊,这回过来,然后呢,就是大家打开这个思维导图,思维导图的话呢,这要打开的话呢,这不还是用上面这个工具呢,你给它诶拖进去不是拖进去啊browse的时候哎,通过找这个目录找到这个文件打开,然后fix一下就可以了啊。那什么时候会出错呢?就是当你这个文件的话,更改过目录,更改过这个文件路径的时候,再打开它就报错,所以呢,拿了一个fix一下就可以了啊fix完以后呢,它会生成这个一个小的bak文件,这个你别删了,留着就可以了,然后这时候你再双击打开这个思维导图就可以看到了。啊,那这呢,我们就按照这个顺序呢来讲一下啊,首先第一个问题呢,就是应用的一个打包签名,那首先第一个概念什么叫打包。嗯,打包呢,就是根据签名和其他的标识生成的安装包。
01:02
啊,这个这样一说的话,反而感觉稍微有点绕啊,其实说白了就是我们呃,这个你写完这个工程以后,这个应用以后呢,我们呃,编译的时候呢,在运行最后呢,会生成一个APK文件,那这个APK文件呢,其实就理解成是一个最后打包成的一个文件,实际上是一个压缩包啊,我们当时讲安卓技术的时候呢,第一第一天不就把它改成个Z文件啊,也能解压开,其实它就是个Z文件啊,然后这个文件呢,其实就打包最后生成的这样一个文件,这就是一个打包的过程。啊就是这样的,只是说呢,在这个打包过程当中呢,涉及到了签名啊,其他的一些标识。那杨呢,就是虽然我们之前呢,还没有去刻意说签名这个事儿啊,但实际上呢,我们最后生成的K文件里边呢,已经是签过名了。啊,这事怎么讲,哎,我们往后边来说啊,呃,第二个概念呢,我们再提一下什么叫签名。啊,有同学想这个签名,这很熟啊,是吧,介绍个明星,然后给你画两笔,这叫签名了哈,嗯,这个签名跟那个签名呢,还不太一样。
02:08
啊,当然呢,你要说完全不一样嘛,也有相同点,那就是都是写上自己的名字啊,但是呢,比如说呃,假设我出了一本书,然后呢,你买了这本书,你现在让我签名,呃签名以后这个书还是你的是吧,这点是不一样的啊,就是这个签名的话呢,就是呃,我写了个应用,然后呢,我这个应用在打包的时候呢,签了名了,那表示这个应用呢,是我发的。啊,是这样子的哈,也就是说呢,我们通过这个签名呢,就是标识的,这个应用到底是给谁开发的,相当于就是标识的,呃,开发者其实就相当于你写了一本书或写了一个文章,呃,这个文章呢,署了一下你的名字啊,那这个署名的过程呢,其实就是签名的一个过程。啊,那我们怎么来理解,呃,首先呢,提到了第一个点,说在安卓当中应用文件中保存了一个特别的字符串,呃,这个特别的字符串呢,我们就把它称为叫签名。
03:02
啊,这个就像我们前面讲到这个杰森一样,呃,杰森的话呢,呃,你要说的这个高大上一点,就是客户端或者是浏览器跟后台在交互过程当中一种数据格式。而且呢,是现在比较主流的一种数据交换格式啊,当然你要说的简单一点的话呢,这不就是一个字串吗。是吧,哎,本质上呢,这个杰森呢,就是一种特殊格式的字符串啊,你写成杰森数组的那个样式的,还是杰森对象的样式的,它其实就是一个字符串啊,而这里边这个,哎,我们说这个签名的话呢,其实本质上来讲也就是一个特别的字符串。啊,当然这个字串呢,你可以涉及到呃,这个相应的一个,比如说嗯,这叫什么加密是吧,这样一个过程哈,呃,然后呢,我们把它呢,相应的保存在一个文件里面,呃,随着你这个打包的这过程呢,一块集成在你的APP文件里啊是这样的。主要目的呢,就是用来标识不同的开发者啊,A或者是B啊,下面写的说一个应用的开发者开发的多款应用应该使用同一个签名。
04:08
啊,就比如说鲁迅呢,写了很多文章,每一个文章呢,相当于一个应用,那每一个文章的话呢,他都会签个名,也就是说每一个应用的话呢,如果都是你开发的,那一般情况下呢,你用的都是同一个签名文件。啊,比如我写了五个应用,但是五个应用的话,通常我都会用同一个清理文件啊,那也一个意思就是不用。啊,每一个应用各自的使用这个签名,使用这个字号啊,用一个就可以了啊。哎,说如果两用呢,是同一个开发者开发的,前面就一样了,然后这个开发者呢,可以是个人,也可以是公司或团体。那就是个人的话呢,比如就是自己写的这样一个应用,那就是个人的啊,这个生成一个签名文件,然后呢,随着你这个应用的来打包这样的集成在里边,那也可以是公司或团体啊,比如说像微信这样应用,或者新浪微博,呃,这是整个这个比如说是腾讯公司的啊这样一个产品,然后呢,这个签名文件呢,他就用的是呃,整个公司是这个集成的一个啊啊所以说这个呢,其实没有说呃对这个人呢,或者个体的一个要求。
05:16
啊,每个人呢,都可以去生成一个签名文件哈,然后呢,随着你用的一个打包啊集成在里边。啊,下面呢,提到一个点,说为什么要签名。哎,为什么要签名,这里边呢,呃,提到了两个原因,第一个呢,最简单的一个原因就是系统要求。有要求的时候,我们再去打包的时候呢,一定要签名。那这边有个说明看一下啊,说安卓系统呢,要求每一个安卓应用程序必须要经过数字签名才可以安装到系统当中,也就是说呢,如果一个安卓应用程序呢,没有经过签名,它是没办法安装到系统里面的。不管你是模拟器也好,还是真机也好啊,是都需要签名的。啊,那之前我们没有呃说过这个事儿啊,这个应用了朝阳装照样运行,那说明了它提供了一个默认的一个签名。
06:06
哎,默认这个签名,一会我们说那个文件的位置啊。那原因二呢,就是嗯,不同的程序员开发的应用光明可能会相同,导致一个应用呢,会覆盖掉另一个应用。这个事情还是比较严重的,或者说我们还是需要重点来关注的。举个例子啊,比如说现在这个微信啊,这已经是使用用户量这个几亿的啊,那这样的一个产品的话呢,基本上每个人的手机上都会安装,那我们其实可以很轻松的啊,你查看到微信这样的应用的光明。对吧,哎,不管你是把它改成这个,你下载好它的一个APK文件,然后呢,你给它改成接口文件,嗯,然后直接解压,其实你也能够。呃,通过什么呢?通过就是它那个代码,你看到他这个文件目录,呃,基本上你也能够猜出来他的一个报名啊,或者说的话呢,你把这个微信运行好以后,比如说我们在这个DS里边,你通过这个DDMS啊,DDMS啊,你看它这个呃,加载的这个进程。
07:10
啊,你看哪个是微信的啊,你其实也能够看得到他的这个报名是什么,所以这个事情呢,是很简单的啊,那你能看到标名报名以后呢,呃,有些人可能就想做这个事情,说既然在一个系统当中。啊,每一个应用呢,光明都是唯一的。这个咱们说过了对吧,既然报名是唯一的,当时我们讲过说如果你安装了一个应用,报名是我就简写成个一了啊一这个一个报名一个相当于一个这个。也相当于一个字符串一样啊,然后现在呢,我又安装了一个跟这个一的报名是一样的。按照我们原来讲的这个思路,它是不是一个覆盖啊。好,那就相当于我们现在呢,比如说你自己写了一个应用。啊,实际上呢,就是一个恶意的一个软件了哈,啊你呢,用了这个应用的图标呢,跟微信的一样,嗯,这个名字呢也都一样,报名呢也都一样,然后呢,就恶意的放到这个应用市场了,当然前提是应用市场得审查通过是吧,假设呢,你通过不当手段也通过了。
08:13
呃,然后就开始分发是吧,当然你这里边我可以写一个版本更高一些啊,那就是相当于一检测发现诶存在最高版本了,那你这块呢就呃用户呢,就是试图去装,假设呢还装上了,那你这实际上就把原来这个应用不就给替换掉了吗。啊,那那就相当于你这个微信应用还是挺危险的啊,很容易就被别的应用同名的给替换掉了,那用户一打开发现是一个病毒,手机废了。是吧,或者手机没费,然后呢,开始呃,检索你手机的这个联系人啊等等,开始上传啊等等。这都不安全啊,所以呢,肯定不能这样。嗯,基于这样的一个实际情况呢,这是我们就说了啊,说微信这个应用呢,在用户安装的时候呢,我们需要给他提供一个签名。那就比如说是整个,呃,微信公司的啊,他有个签名文件,然后签名以后呢,呃,随着这个应用的发布啊,然后也发布了,然后用户呢,安装好以后这个应用呢,虽然报名是这个。
09:12
但是呢,它这里边儿这个签名是人间唯一的。啊,然后呢,你造了一个报名跟人家微信报名一样的这样的应用,但是你的签名文件你是拿不到人家的这个的。啊,你就是即使拿到了啊,当然这个拿到的是已经是不可能的了,他肯定。不会公布出来的哈,这都是个人这个保存的哈,或者公司保存的,嗯,就即使你拿到了他也有密码。你也用不了,说白了哈,嗯,就总之呢,就是你的这个签名文件一定跟微信这个签名文件呢是不一样的,那既然如此,那你打包商城APK以后呢,当你试图呃发到这个应用市场,然后用户做安装的时候,呃,这个时候呢,实际上是安装不成功的。啊,它会提示用户说在本机上存在一个报名同样的应用,但是签名不同,说问你是不是要安装。
10:06
啊,当然你要说点式的话哈,点式的话呢,还是可以覆盖掉的。但是呢,这个至少是有了一个提示的啊,或者用户的话呢。很多时候呢,他就点否了是吧,那这你就没办法去替换人家本地应用了啊。这其实从另外一个角度来说的话呢,就是对于公司也好,对于个人也好,你是不是也不能把自己的这个签名文件给丢了呀。啊,就是你自己呢生成的,这是第一个版本,你用了一下自己这个签名文件回头呢,你给丢了。啊,或者说不是丢了,就是你到公司的时候呢,这个公司已经发布了一个产品了,一个版本了,然后呢,那个程序员走了回来以后呢,你又去了,你去了以后呢,你给他迭代了一个版本,然后这个时候。你要发布的时候呢,肯定是要签名的啊,结果这个时候的签名文件跟上一个版本签名文件还不一样。
11:00
是不是同样会出现这个文件啊是吧?哎,所以这里呢是需要你关注的,这个呢是你没有注意这个事,自己就生成个签名文件打包一下,这就错了,或者说呢,之前的那个签名文件给丢了。这都是挺严重的问题的。啊,等一下我们说这个丢了的问题啊,先把这个事刚才搞清楚啊,这就说明就是说,呃,我们呢,需要。啊,除了你这个包名去区分以外呢,哎,我们还得需要呢,拿一个东西呢,呃,去表明你是不同的开发者,即使你们的包名不一样啊,即使你的包名一样。啊,但是开发者不一样,那也不允许它直接呢覆盖。啊,相当于起到了一个保护的作用啊,啊这里边就说到这样一个事情啊,报名一样了,那如果你这个实现覆盖呢,是不合理的,所以我们呢,这里边有一个签名的一个问题啊,签名只要不一样就不会覆盖。啊,这是这个事儿啊,然后呢,我们顺着这个呢,就先把后边这个注一的也说一下啊。
12:04
说千万不要呢,把这个签名文件弄丢了,这个签名文件呢,就我们等下要说的啊,这两种格式的啊,叫签名文件不能整丢了。那万一要丢了怎么办?是吧,万一要丢了怎么办,万一要丢的话,这里边说的说,嗯,那你要是真丢了的话。啊,那用户刚才装的是比如说第一个版本的应用,用的是这个签名文件,然后呢,你现在呢,呃,让用户呢,去更新签名文件丢了,那就再换一个,再换一个呢,这时候用户去更新的时候呢,实际上是不可以直接就更新成功的了,就像刚才说的,它会提示一个对话框。说在本地存在一个相同包名的应用,但是签名不同,问你是不是要安装,那用户呢,就可以点否了啊啊,那你这块呢,实际上是。跟你用同样的签名文件效果是不同的。啊,这是一个问题啊,再一个问题的话呢,就是你在应用市场上的这个排名的话呢,就得从零开始算了,就是你实在丢没办法,那得从零开始算。
13:09
那就意味着比如说像微信这个应用啊,在这平台上已经标识了有多少艺人使用。那有的用户呢,就是他当然微信大家都熟了哈,你换一些应用,你好容易积攒了,比如几十万个下载用户了,那很多人新用应用的时候呢,它会搜索一下排行榜,按照排行榜上才去下载,结果你这时候丢了,丢了以后呢,你再重新打包签名了一下,那你这个时候这个数在应用市场就要从零开始继续累积。相当于你这个累积的这个好不容易有这样一个成绩了,就从归零了,就。啊,那这个是很要命的哈。啊,那所以说呢,这个签名文件肯定是不能丢的。啊,肯定是不能丢的哈。就是你在公司里边开发这个产品,后来你走了,这机密文件你肯定是要留下来的,对吧。那时你留下来以后。
14:01
你你也不可能说干点别的是吧,你说回头我自己写个恶意的,那也没这样干的啊,对你也没啥好处是吧。好,这是我们说的这个签名文件的一个事情啊,那接下来的话呢,我们来说一下如何去实现一个签名打包。嗯,这就我们要说的这个问题了啊。啊,这边来看这个事情,说用来生成应用,前面这个文件,这个文件呢,提到叫debug.store。啊第八个store这个在哪呢?就是大家找主要这个目录啊,啊第二第这个目录的话呢,很多同学放在这个位置不一样啊,我这呢是放在这个SDK里边了啊,有的同学呢,是放在这个这个C盘了等等啊总之呢,就是我们你再安装模拟器以后呢,它是不是就有个点按照这个一个文件目录。哎,我这系统又换过啊,他是给放在这儿了啊。在这个填转到文件目录里边呢,有一个。At the。第bug.kal对啊,这个呢,就是一个默认的一个用于签名的这样一个文件。
15:05
啊,那相当于就是我们这个大家呢,你通过这个as也好,或者通过eclipse也好啊,你去写了一个安卓应用,回头呢给它编译运行了一下,在模拟器或者真机上,那回头呢,哎,你就能够再给我随便开了一个工程啊,提供了一个应用。嗯,你就可以在我们这个build下边。嗯,我这呢,将在没有正式运行哈,运行完以后的话呢,它这个有个K文件是吧。然后这里边儿我们就找到这个文件了,那这个文件呢,实际上是也签名过。啊,那他的这个签名呢,就是使用的我们默认的这个。啊,位置上的它。啊,就是它哈,呃,但是建议的话呢,肯定是不能用默认的了。啊,真正你这个应用想上线开发肯定不能默认的啊,说一定要用自己的啊为什么呢?哎,这边提到一点,说不同的这个电脑这个生成的签名呢是不一样的。
16:03
啊,我现在在这个公司的电脑里边打包签名份,签名一份,那回头比如说你呃,又换到公司里边另一台电脑,说我进行一个版本升级,对了,他俩这个默认的签名文件不一样,那你打包升级一下那个,那用户呢,又又更新不了了,签名不同啊,所以说呢,我们必须得得显示的去提供一个签名文件啊,就是这样用于签名的文件。啊,那显示的去提供一个的话呢,这里边就提到了你用的不同的开发工具了啊用eclipse呢是一种生成方式,而且这个后缀呢叫key store。啊,就是我们说的用一签名这个文件啊,啊,这个用eclipse去生成的话呢,就不在这讲了,因为现在呢,主角我们已经不用eclipse去开发安卓应用了。啊,这个就略掉了哈,如果呢,呃,去公司当中,你恰巧说公司还是用的CL。那你就百度一下看看是怎么生成就可以啊,这个也比较简单。
17:01
嗯,现在还真有的公司哈,当然已经是非常少了,现在都还在用eclipse啊。或者说呢,他有一些老的项目,他也不愿意去改as,那他在老项目上面去用ecl去写啊,那这时候呢,你签名的时候呢,嗯,如果说一开一开始没有这个签名文件,你就是用Li去生成啊,如果已经有了,那直接打包的时候呢,哎,把这个文件给它加载进来就可以啊。那我们主要呢,来谈一下在as当中怎么去生成这样签名的这个文件。啊,在as里边呢,这个文件呢,咱就不叫k store了啊叫JKS。啊叫GKS啊嗯,虽然叫GKS后缀了,但是通常大家可能都习惯了啊,所以也经常说,哎,你这个前面那个文件啊。啊,也经常说k store了,但其实在这里边呢,叫GKS。嗯,像这个事呢,理解一下,然后呢,我们主要来看一下在嗯,As里边,我们怎么去这个生成这样的一个文件,以及呢,我们如何去打包一个嗯在签名的应用。
18:04
哎,把这个过程呢,我们先来描述一下啊。那下面呢,我们就来做这个事情。嗯。这个呢,我先填一下吧。
我来说两句