一种Android的多平台的安装包打包方法探究

     继 Google I/O 宣布新系统 Android L 带来 64 位支持后,Android NDK 日前正式推出 Revision 10 更新,添加 ARM、x86 和 MISP 架构芯片的 64 位 ABI 支持。

     因而,全部ABI个数至少达到了8个.如果每个平台的链接库大小达到10M,加起来就达到了80兆,如果直接安装进手机,则会浪费手机的宝贵的存储空间.当然,在云时代,又有了一种方案,安装后在从云端下载,问题又来了,云端下载下来需要流量或宽带,同时还要对云端进行维护,问题也不小.还有一种方案是,各平台独立打包,独立打包可以减少安装包的体积,但是又会引发一个问题,发布的时候显得混乱,管理上麻烦不断.

     有没有更好的办法?答案是有的,众所周知,apk就是一个zip文件,zip文件可以包含一切文件.就利用这点来解决.

在apk中,lib存成的各平台的动态链接库,每个平台需且仅需一种.因此,lib中存成各平台的链接库.我们仅需要多制作几份签名就可以了,这样去签名,有多少种类型的链接库就制作多少份签名,签名时忽略其他平台的链接库,然后生成META-INF文件(.MF,.SF,.RAS).用链接库所属的目录名命名其目录,如armeabi.再将该目录放在assets目录下的META-INFS目录里.这样和以往的APK相比,就多了这个目录.

assets目录

|--META-INFS

   |  |-- armeabi

   |  |--armeabi-v7a

   |  |--x86

  .......

-----------------------------------------------

armeabi目录

  |  |--MANIFEST.MF

  |  |--CERT.SF

  |  |--CERT.RSA

--------------------------

    最后再使用签名工具,对该安装包签名.

     这样,发布到渠道后,渠道可以将这个多平台的安装包拆解,当用户下载APK的某个平台时,后台可以直接将该平台的提取出来,抛弃不必要的,然后打包给用户下载.当然这需要渠道,应用分发平台的支持才行.

    如果用户把全平台的都下载下来,也可以直接安装全平台的安装包,如果安装器能识别出可以部分安装的话,可以将该平台的提取出来,打包后安装即可.

   当然,里面还有一个zip对齐问题,其实这个问题很容易解决的.

 

转载于:https://my.oschina.net/u/256033/blog/308234

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值