- 当一款应用或者游戏需要上不同的渠道平台时,肯定首先是接入需要上架的渠道的SDK,然后出对应的渠道包给渠道方,部分渠道方对于应用的ICON是有要求的,比如需要加渠道角标,也有可能不同的渠道需要不同的ICON去吸量,过一段时间后ICON也可能会涉及修改
- 对于游戏应用来说,要维护N多套不同渠道SDK以及不同的ICON真的是有点繁杂了,最好的解决方案就是只接入一套统一的SDK、IOCN也不用在项目里面维护,由聚合SDK平台方进行维护,现在市面上有很多的聚合SDK,比如U8、Quick等,我们只需要接入的他们的聚合SDK就可以了,不用再维护具体的渠道和ICON
- 如果我们自己有一套聚合SDK,当不同的渠道需要打入不同的ICON,我们应该怎么去实现呢,首先肯定需要去开发一个出包工具软件,主要就是用来打入不同渠道的代码,出不同的渠道包,这里我们就专门来讲下ICON的修改与合并吧
- 首先我们使用apktool命令对apk进行解析,然后查看AndroidManifest.xml的application节点的属性,里面有个android:icon="@drawable/ic_launcher" ,ic_launcher一般是png图片,放在不同的drawable文件夹下
...
- 当我们得到了应用设置的ICON的名称后,我们就可以对这个“ic_launcher”,进行替换 *** 作了,首先我们的准备一张新的ICON图片,我们统一使用PNG格式的图片吧,图片尺寸定为512*512吧,然后我们就需要对新的ICON图片进行缩放处理,下面是使用java实现的进行缩放处理方法
/** * @param srcImage 源图像文件 * @param target 缩放后的图像路径 * @param width 缩放后的宽度 * @param height 缩放后的高度 */ public final static void scaleByWidthHeight(File srcImage, String target, int width, int height) { try { BufferedImage img = ImageIO.read(srcImage); Image _img = img.getScaledInstance(width, height, Image.SCALE_DEFAULT); BufferedImage image = new BufferedImage(width, height, BufferedImage.TRANSLUCENT); Graphics2D graphics = image.createGraphics(); graphics.drawImage(_img, 0, 0, null); graphics.dispose(); OutputStream out = new FileOutputStream(target); ImageIO.write(image, "png", out); out.close(); } catch (IOException e) { e.printStackTrace(); } }
- drawable下有不同分辨率的文件夹,而且后面v4等其他的后缀,我们也不一定全部去覆盖掉,一般我们处理常见的就行了,只要能保证res下的“ic_launcher.png”全部被覆盖掉就行了
- 我们就统一只适配drawable、drawable-ldpi、drawable-ldpi-v4、drawable-mdpi、drawable-mdpi-v4、drawable-hdpi、drawable-hdpi-v4、drawable-xhdpi、drawable-xhdpi-v4、drawable-xxhdpi、drawable-xxhdpi-v4、drawable-xxxhdpi、drawable-xxxhdpi-v4就行了,缩放的尺寸分别为:144、144、144、144、144、192、192、256、256、384、384、512、512,也可以自己定义尺寸大小,然后调用scaleByWidthHeight()方法进行缩放处理,处理完成后聚拷贝到对应drawable目录下去覆盖掉原来的ic_launcher.png文件就行了,然后再使用apktool命令将修改后的母包目录进行重新构建生成新的apk,然后进行签名。资源对齐等处理后,就成功的修改了原来的游戏母包的ICON了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)