美文网首页
php解析ipa

php解析ipa

作者: 哎哟我去 | 来源:发表于2021-03-29 14:25 被阅读0次
    • 用composer安装两个库
      rodneyrehm/plist
      abbotton/ios-png-parser
    • tp6框架下的示例代码
     /**
         * @param $targetFile
         * @return mixed
         * @throws IOException
         * @throws PListException
         * @throws DOMException
         */
        public static function ipa($targetFile): mixed
        {
            //临时目录存放info.plist
            $storage_path = runtime_path() . 'ipa' . DS . time() . DS;
            $zip = new \ZipArchive();
            $zip->open($targetFile);
            $zip->extractTo($storage_path);
            $plist_index = $zip->locateName('Info.plist', \ZIPARCHIVE::FL_NOCASE | \ZIPARCHIVE::FL_NODIR);
            $plist_path = $zip->getNameIndex($plist_index);
            $zip->close();
            
            $plist_path = explode("/", $plist_path);
            //拼接logo的路径
            //todo logo名称如何改为变量
            $logo_path = $storage_path . $plist_path[0] . '/' . $plist_path[1] . '/AppIcon40x40@2x.png';
            // 拼接plist文件完整路
            $fp = $storage_path . $plist_path[0] . '/' . $plist_path[1] . '/Info.plist';
            // 获取plist文件内容
            $content = file_get_contents($fp);
            
            // 解析plist成数组
            $ipa = new CFPropertyList();
            $ipa->parse($content);
            $ipaInfo = $ipa->toArray();
            
            //包的大小(字节)
            $ipaInfo['PACKAGE_SIZE'] = filesize($targetFile);
            //解密logo并编码为base64
            $parser = new \IosPngParser\Parser();
            $decryptedPngFile = $storage_path . $plist_path[0] . '/' . $plist_path[1] . '/AppIcon40x40@2x_tmp.png';
            $parser::fix($logo_path, $decryptedPngFile);
            $ipaInfo['BASE64_LOGO'] = self::base64EncodeImage($decryptedPngFile);
            
            //删除刚才的临时文件(:小心删除系统:)
            exec('rm -rf ' . $storage_path);
            return $ipaInfo;
        }
        
        /**
         * @param $image_file
         * @return string
         * 图片转为base64编码
         */
        private static function base64EncodeImage($image_file): string
        {
            $image_info = getimagesize($image_file);
            $image_data = fread(fopen($image_file, 'r'), filesize($image_file));
            return 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));
        }
    

    相关文章

      网友评论

          本文标题:php解析ipa

          本文链接:https://www.haomeiwen.com/subject/rqdbhltx.html