Android 不修改源码文件,如何替换apk包的ICON?使用java方法对图像进行缩放处理,生成不同屏幕尺寸的ICON再进行合并

Android 不修改源码文件,如何替换apk包的ICON?使用java方法对图像进行缩放处理,生成不同屏幕尺寸的ICON再进行合并,第1张

  • 当一款应用或者游戏需要上不同的渠道平台时,肯定首先是接入需要上架的渠道的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了

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/728245.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存