美文网首页收藏
一键合并APK和aar、jar,一键集成SDK

一键合并APK和aar、jar,一键集成SDK

作者: 窝头就大葱 | 来源:发表于2020-04-07 14:05 被阅读0次

    各路SDK厂商福利,现有一款神器,可以一键合成apk文件和aar 文件以及SDK初始化代码描述文件,运行起来就是集成好SDK的APP了。

    主要解决问题,SDK厂商兼容性测试,新开发的sdk想去测试一些大厂App,比如拼多多。那么该reverseToy神器就是你需要的,

    GITHUB https://github.com/dyglcc/reverseToy

    简单介绍一些实现原理:

    站在巨人的肩膀上,在大神Connor Tumbleson的apktool的基础上修改而来。

    实现整体思路:

    通过使用aapt工具将aar文件打包未一个apk文件,然后通过合并arsc,合并arsc后产生一个新旧id的mapping文件,替换aar的smal文件的旧id,注入application初始化代码,拷贝资源文件,res,assets文件,so库,最后打压缩包签名。

    首先说明一下apk文件的整体目录结构,有arsc文件,dex文件,res文件夹assets文件夹,arsc是整个app用到资源项目,

    dex文件可以通过smali工具打包到dex,res和assets通过copy文件即可完成合并,

    第一步:

    最复杂是arsc二进制文件的合并,需要合并stringBlock,合并spect type,计算二进制头文件的字节数,否则会解析出错。

    第二步:

    接下来是合并AndroidManifest.xml文件,将aar文件中的permissions、activity、service、feature、provider、receiver等合并到apk的AndroidManifest.xml文件中。

    第三步:

    资源id替换,在合并arsc文件会产生一个mapping文件,这是一个aar资源被重新编排后会产生新的资源id,合并资源文件步骤,会将aar资源的二进制文件,比如,res下面的xml文件中的旧的id替换为新的id,并重新写二进制文件。

    第四步:

    smali文件处理,这一步将dex文件解析,并找到application的smali文件,加入SDK初始化代码,加入方式采用json的描述配置文件方式,将代码的初始化配置为一个json文本,打包会将json文件放在assets文件夹下面,启动解析并用反射方式执行SDK初始化代码。

    下图是吆喝科技AB测试初始化代码描述方式:

    SDK初始化描述文件

    最后将sdk的所有代码,打包为dex文件,并压缩为zip包,签名

    还有额外的一些功能,比如更新sdk代码,和设置debuggable为true等功能方法开发者用户去调试。

    想用的朋友可以去github下载realease包 ,目前最新版本1.0.3

    GITHUB https://github.com/dyglcc/reverseToy

    觉得不错的朋友在GITHUB帮忙点个赞。

    相关文章

      网友评论

        本文标题:一键合并APK和aar、jar,一键集成SDK

        本文链接:https://www.haomeiwen.com/subject/aebgphtx.html