Java解析ipa读取包名,版本名,版本号,urlSchemes等等信息源码

这段代码展示了如何使用Java解析IPA文件,从中读取应用的包名、版本名、版本号和图标等信息。通过ZipInputStream遍历ZIP文件,找到.info.plist并解析为NSDictionary,从而获取到所需数据。
摘要由CSDN通过智能技术生成

public class IpaUtil {

    public static Map<String, Object> readIPA(String ipaURL, String picturepath) {
        Map<String, Object> map = new HashMap<String, Object>();
        String newIconName = null;
        try {
            File file = new File(ipaURL);
            InputStream is = new FileInputStream(file);
            InputStream is2 = new FileInputStream(file);
            ZipInputStream zipIns = new ZipInputStream(is);
            ZipInputStream zipIns2 = new ZipInputStream(is2);
            ZipEntry ze;
            ZipEntry ze2;
            InputStream infoIs = null;
            NSDictionary rootDict = null;
            String icon = null;
            while ((ze = zipIns.getNextEntry()) != null) {
                if (!ze.isDirectory()) {
                    String name = ze.getName();
                    if (null != name && name.toLowerCase().contains(".app/info.plist")) {
                        ByteArrayOutputStream _copy = new ByteArrayOutputStream();
                        int chunk = 0;
                        byte[] data = new byte[1024];
                        while (-1 != (chunk = zipIns.read(data))) {
                            _copy.write(data, 0, chunk);
                        }
                        infoIs = new ByteArrayInputStream(_copy.toByteArray());
                        rootDict = (NSDictionary)PropertyListParser.parse(infoIs);
                        NSDictionary iconDict = (NSDictionary)rootDict.get("CFBundleIcons");
                        if (rootDict.containsKey("CFBundleIconFiles")) {
                            NSArray CFBundleIconFiles = (NSArray)rootDict.get("CFBundleIconFiles");
                            NSObject[] array = CFBundleIconFiles.getArray();
                            if (!Utils.isArrayEmpty(array)) {
                                icon = CFBundleIconFiles.getArray()[array.length - 1].toString();
                                icon = icon.replace(".png", "");
                                if (null != icon) {
                                    break;
                                }
                            }
                        }

                        // 获取图标名称
                        while (null != iconDict) {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值