apk合包,apk合并。附免费合并工具

Android应用合并:实现apk合并,将两个不同功能的单独apk,合并成一个apk。

0.序

在市面上发现了一款牛逼的Android应用,里面能加载展示不同的其他Android应用。两个应用的功能完全不一样,分别就是两个不同的包。

1.如何实现apk合并

那他是如何实现多个apk合并到一个apk里的呢。

1.1.方案1-虚拟化Android引擎

这个方案是比较牛逼的方案。

原理:就是一个架子,壳。hook和虚拟化了apk加载运行的Android环境。

用户启动真实apk时,会被这个壳拦截,然后包装成这个壳在展示请求,清单等注册时也只用注册这个壳的相关信息。

你可以把这个壳理解为虚拟的Android系统,在里面安装运行apk

1.1.1.优点

开发apk时,基本上不用太做注意和更改,就正常开发apk就行,前期开发适配需要的开发量很少。

可以动态下载apk,动态按需加载apk。

1.1.2 缺点

这个方案实在是太牛逼,导致技术门槛高,一般开发者只能用,自己开发没戏。有公司在搞这个,技术支持费用肯定是免不了的。

性能有影响,加载启动apk速度慢,因为每次启动一个apk,都需要先启动一个虚拟的Android系统,这个速度比较慢。

适配性有一定的问题,毕竟是虚拟Android系统,hook拦截真实系统的消息,这种操作相当危险,这种方案的代码有的已经被标记为病毒,很难改动。

有些权限和功能,在有的设备和环境会无法运行,这个兼容程度取决于提供这个技术的开发者适配的能力。

如果自己公司想确保应用的兼容性和稳定性,不建议这种方案。

1.2.方案2-插件化

这个方案市面上很多公司都在用。大公司基本都是用的这个。
如果应用很大,模块很多,功能很多,就会实现插件化,其他不常用和非基础的模块都是后面下载动态加载的。

原理:设计一个基础通用框架协议,所有其他应用或模块都遵循使用这个框架协议,相当于套了一层壳。

运行时,是这个通用框架协议的壳与系统交互,里面的应用或模块不会直接与系统交互。

1.2.1. 优点

这个方案很稳定,适配性好,毕竟所有代码都是自己开发的,维护也比较方便。
可以动态下载apk,动态按需加载apk。

1.2.2 缺点

前期开发成本很大,每个应用都需要遵循通用模块协议开发,
如果已经开发完的apk,想合并,那重写适配的成本很高很高。

1.3. 方案3-资源代码合并

这个方案是我目前使用的方案。市面上也有人在自行研究,大多是因为觉得方案1太贵,适配不太好,方案2开发量太大。

原理:将多个apk的资源代码so直接加密保存,清单进行合并,不同包注册为不同进程,启动对应进程时释放加载对应的资源代码so。

运行时,对应apk是一个单独的进程,资源代码等互不影响。

优缺点介于上述两种方案之间。

1.3.1. 优点

已开发完的apk基本不用改动就能合并。开发适配工作量不大。

相对方案一来说,兼容和性能较好,基本和方案二持平。

1.3.2 缺点

实现 对apk处理 资源代码so 动态加载比较麻烦,原理就是市面上的加固方案。有一定的技术门槛。

合包时有一定的困难,毕竟需要将多个独立的apk合并在一起,会有很多冲突,有些自动解决后会有一定的问题,有些还是需要对原包做一定改动进行适配。

2.工具介绍

我最开始是处于应用安全的目的去开发的工具,实现了apk加固的功能。
后面看见这种对应用合并的功能,觉得很牛逼,于是基于apk加固的实现上,实现了apk合并。

详见工具apk加固合并工具

3.尾

可能你有这方面的研究兴趣和需求,可以使用工具合并研究一下。欢迎技术交流讨论。

  • 25
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这个我知道诶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值