博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一种Android的多平台的安装包打包方法探究
阅读量:7056 次
发布时间:2019-06-28

本文共 1037 字,大约阅读时间需要 3 分钟。

hot3.png

     继 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

你可能感兴趣的文章
测试学习计划(一)
查看>>
使用cronolog切割tomcat日志
查看>>
我的友情链接
查看>>
Linux基础(3)
查看>>
扫盲贴:T-SQL语句执行顺序
查看>>
shiro 过滤属性的意义
查看>>
linux中正则表达式的使用方法
查看>>
grub2配置文件
查看>>
文件压缩
查看>>
SQL中EXISTS的用法
查看>>
基于虚拟用户的邮件系统配置
查看>>
阿修罗监控与grafana结合使用
查看>>
我的友情链接
查看>>
JDK 和JRE的区别
查看>>
lanhelper
查看>>
PLSQL中的内存表--Index By Table
查看>>
Shell练习(十二)
查看>>
解决springmvc+mybatis+mysql中文乱码问题【转】
查看>>
十三,十四单元总结
查看>>
表单布局
查看>>