Android 手游聚合SDK小知识(二) 聚合分包

Android 手游聚合SDK小知识(一)
Android 手游聚合SDK小知识(二) 聚合分包

更新:

在上一篇文章中,我们介绍了如何聚合SDK的基本原理,介绍了聚合SDK的接口设计,那么当CP接入了我们的聚合SDK,给了我们游戏apk包时,这时我们又当如何分发渠道包呢?

分发渠道包:

该操作方式都是在只有游戏apk包的情况下进行的

开始合包

1、apk反编译

apk反编译使用apktool这个工具,可以将apk文件反编译,apk命令如下

java -jar D:\apktool.jar d apk路径 -o 反编译输出目录的路径

将母包apk和SDK包反编译处理得到待合并资源。

2、SDK资源合并

2.1、合并assets目录

将SDK的assets目录下的资源复制到母包的assets目录下,注意文件名不要冲突,如果冲突请修改SDK的文件命名方式。

2.2、合并lib目录

将SDK的lib目录下的文件复制到母包的lib目录下,但是要注意,复制的时候要以母包的目录为准,举个例子,SDK的lib目录下有x86和x86_64两个目录,母包的lib目录只有x86_64一个目录,则合并的时候,以母包为准,只保留x86_64这一个目录。

2.3、合并res目录下的资源

res目录下一般包括以下几个目录:

  • layout:布局文件
  • anim:存放动画定义文件
  • color:存放自定义颜色文件
  • menu:存放菜单自定义文件
  • xml:存放配置文件
  • drawable/mipmap:存放图片文件
  • raw:存放不压缩文件
  • values:存放主题样式,字符串等文件
    注意:合并文件的时候,可能会出现文件名重复的问题,所以这就要求我们的SDK的文件名和母包的文件名不一致,建议SDK的文件命名的时候加个前缀.

以上目录除values外,其他目录的合并方式:
直接将SDK的文件复制到母包下就行,有同名的改一下SDK的命名方式。

values目录文件下除public.xml文件外的合并:
将SDK有,母包没有的目录直接复制过去,例如SDK有values-zh目录,母包没有这个目录,就将SDK整个目录复制到母包里。
如果SDK有,母包也有的目录,则合并目录中的文件内容,比如string.xml或color.xml等,将SDK对应文件的内容复制到母包中,如果内容命名方式相同,例如<color name="colorPrimary">#3F51B5</color>这样的name,母包和SDK都有,则想办法将SDK的name命名方式修改掉,如果是系统参数或修改不了,则保留母包的。

values目录文件下public.xml文件的合并:
一般来说,我们做SDK,不要使用R.id或R.layout等资源引用方式,而是使用getIdentifier()这种方式来动态获取资源ID。
如果母包和SDK都使用了getIdentifier()来获取资源ID,则把两个public.xml都删掉,或者保留母包与SDK任何一个的public.xml都行,因为这个时候没有使用到R资源,你都删掉或者保留任何一个都行。
但是有的时候会遇到没有使用”行规“, 动态获取资源id,而是使用R.id的方式,这种情况下有下面几种处理方式。
一、保留母包的public.xml,删掉SDK的public.xml。
二、保留SDK的public.xml,删掉母包的public.xml。
三、合并两个public.xml并重新赋值,并且遍历smali的Rlayout.smali或Rcolor.smali等R文件,修改对应的值。

这三种方法,如果是母包没有用getIdentifier()来获取资源ID,则可以用1,3方法,如果是SDK没有用getIdentifier()来获取资源ID,则可以用2、3方法,如果是双方都没用getIdentifier()来获取资源ID,则只能使用3方法。因为我公司的游戏是自研游戏,母包是按照getIdentifier()来获取资源ID的,所以我直接用了2方法,后续我应该会出一篇文章讲一下怎么合并public.xml和R文件,大家也可以自己百度搜索一下,我发现也有人讲这个。

2.4、合并smali文件

合并smali文件要注意以下几点:
一、删除游戏母包中负责聚合SDK的文件,因为SDK复制进来后,防止没法覆盖掉旧的,同时存在两个聚合SDK文件,导致引用错误。
二、把SDK中的smali文件复制到游戏母包,直接覆盖原文件,注意是直接覆盖,有重复的不管他,直接覆盖。

注意,第二步时,有的时候会出现65535的错误,因为smali文件覆盖后,可能单个smali目录里的文件的方法数会超过65535,这个时候有两种处理方案。
一、扫描里面的方法数,如果超过65535,这种情况需要新建一个smali_calss2文件,如果smali_calss2还不够,就新建smali_calss3,直到每个smali_calss目录里的方法数都不超过65535。
二、复制SDK的smali文件时,直接在母包的下面新建smali_calss,比如母包有smali_calss和smali_calss2两个目录,则复制SDK的时候,直接新建smali_calss3开始一个个复制过去,因为母包的两个smali_calss目录没超方法数,复制的SDK的新建的smali_calss目录也没超,所以不用检查里面的方法数就可以完成smali合并,方便很多,就是同一个APK反复分发的时候,smali数会越来越多。用这个方法的话,建议使用同一个母包分发。

2.5、合并AndroidManifest.xml

把多个SDK AndroidManifest.xml文件的配置整合到一个AndroidManifest.xml中,需要注意是去掉重复的声明,比如:重复的权限声明、重复的meta-data声明等,并注意要修改启动的Activity。

2.6、修改appName或icon

appName直接去修改AndroidManifest.xml中的application节点中的android:label属性的值,如果这个值是引用的string.xml中的appName,去修改string.xml也行。
icon修改直接将新的icon复制替换到res文件夹下,记得每个倍率的都要替换。

2.7、修改versionCode,versionName:等

直接找到母包的apktool.yml文件,修改这里面的这两个参数就行了。

3、回编译

借助Apktool进行回编译即可,回编译命令如下:

java -jar D:\apktool.jar b 母包反编译输出的目录 -f -o 回编译apk的绝对路径

4、签名

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,056评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,842评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,938评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,296评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,292评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,413评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,824评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,493评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,686评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,502评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,553评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,281评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,820评论 3 305
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,873评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,109评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,699评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,257评论 2 341

推荐阅读更多精彩内容