U8SDK——自动处理角标和ICON(完善)
之前我们在U8SDK中集成了ICON角标自动处理的方案,我们仅仅处理了渠道SDK有角标的情况,但是,对于没有角标的渠道SDK,我们并没有处理。也就是还是使用游戏本身的图标。现在,我们也来自动处理一下,不需要角标的渠道SDK,打包的时候,我们也生成对应几个尺寸的ICON。
PS:之前不处理的话,因为部分渠道SDK的资源中,可能自带了名为ic_launcher的默认ICON,如果游戏母包中的ICON名字也是默认的ic_launcher的话,那么最后打包的过程中,渠道SDK的同名文件就会覆盖母包中的文件,导致最终的ICON变成了“机器人”默认ICON。
为了避免这种情况的发生,对于所有渠道SDK,我们都自动完成ICON的添加。每个游戏只需要在config/games/游戏名称/icon/目录下,放一张大小512*512大小的icon.png即可。
所以,我们需要修改下,之前那篇博客中的appendChannelIconMark函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
def appendChannelIconMark(game, channel, decompileDir): """ 自动给游戏图标加上渠道SDK的角标 没有角标,生成没有角标的ICON """ gameIconPath = 'config/games/' + game['appName'] + '/icon/icon.png' gameIconPath = file_utils.getFullPath(gameIconPath) if not os.path.exists(gameIconPath): file_utils.printF("The game %s icon path is not exists:%s", game['appName'], gameIconPath) return 1 useMark = True if 'icon' not in channel: file_utils.printF("The channel %s of game %s not config icon in config.xml, no icon mark", channel['name'], game['appName']) useMark = False rlImg = Image.open(gameIconPath) if useMark: #如果有角标,则添加角标 markType = channel['icon'] markName = 'right-bottom' if markType == 'rb': markName = 'right-bottom' elif markType == 'rt': markName = 'right-top' elif markType == 'lt': markName = 'left-top' elif markType == 'lb': markName = 'left-bottom' markPath = 'config/sdk/' + channel['name'] + '/icon_marks/' + markName + '.png' if not os.path.exists(markPath): file_utils.printF("The icon mark %s is not exists of channel %s , no icon mark", markPath, channel['name']) else: markIcon = Image.open(markPath) rlImg = image_utils.appendIconMark(rlImg, markIcon, (0, 0)) ldpiSize = (36, 36) mdpiSize = (48, 48) hdpiSize = (72, 72) xhdpiSize = (96, 96) xxhdpiSize = (144,144) ldpiIcon = rlImg.resize(ldpiSize, Image.ANTIALIAS) mdpiIcon = rlImg.resize(mdpiSize, Image.ANTIALIAS) hdpiIcon = rlImg.resize(hdpiSize, Image.ANTIALIAS) xhdpiIcon = rlImg.resize(xhdpiSize, Image.ANTIALIAS) xxhdpiIcon = rlImg.resize(xxhdpiSize, Image.ANTIALIAS) ldpiPath = file_utils.getFullPath(decompileDir + '/res/drawable-ldpi') mdpiPath = file_utils.getFullPath(decompileDir + '/res/drawable-mdpi') hdpiPath = file_utils.getFullPath(decompileDir + '/res/drawable-hdpi') xhdpiPath = file_utils.getFullPath(decompileDir + '/res/drawable-xhdpi') xxhdpiPath = file_utils.getFullPath(decompileDir + '/res/drawable-xxhdpi') if not os.path.exists(ldpiPath): os.makedirs(ldpiPath) if not os.path.exists(mdpiPath): os.makedirs(mdpiPath) if not os.path.exists(hdpiPath): os.makedirs(hdpiPath) if not os.path.exists(xhdpiPath): os.makedirs(xhdpiPath) if not os.path.exists(xxhdpiPath): os.makedirs(xxhdpiPath) gameIconName = getAppIconName(decompileDir) + '.png' ldpiIcon.save(os.path.join(ldpiPath, gameIconName), 'PNG') mdpiIcon.save(os.path.join(mdpiPath, gameIconName), 'PNG') hdpiIcon.save(os.path.join(hdpiPath, gameIconName), 'PNG') xhdpiIcon.save(os.path.join(xhdpiPath, gameIconName), 'PNG') xxhdpiIcon.save(os.path.join(xxhdpiPath, gameIconName), 'PNG') return 0 |
本文出自 U8SDK技术博客,转载时请注明出处及相应链接。
本文永久链接: http://www.uustory.com/?p=1841