老乔所最痛恨的东西——Flash .swf播放器上了AppStore

众所周知,苹果的老乔一贯讨厌Flash。这应该和从Macromedia时代开始,Mac OS X的Flash插件一贯优化差,极端情况下可以让Mac笔记本仅仅开浏览器的情况下,电池待机时间减少一半以上有关。
基 于这个理由,加上Flash并非为触摸屏设计的东西,从2007年iPhone初代开始,苹果一贯不准备把Flash引入到iOS上,App Store早期甚至明令禁止任何通过模拟/虚拟手段而非原生的应用。当然这个禁令取消了,Adobe让Flash Builder能做出半原生的iOS App,后来也曾经出现过不少能通过在线代理之类间接支持Flash的app,包括很多浏览器类app,但是它们几乎无一例外只对Flash视频网站有较 好的支持,而对Flash游戏、Flash PV和广告(啪!)支持不好。
真正能运行.swf文件的iPhone app,之前越狱界曾经出现过移植开源Flash播放器gnash的。然而,有这样一个真正的SWF player,这两个月出现在了App Store上。

老乔vs中国卡通

它的名字当然就是——中国卡通。
这个应用的iTunes介绍如下:

中国卡通的app介绍
(PC/Mac请打开http://itunes.apple.com/jp/app/id432260573?mt=8)
其中并未提到任何和Flash有关的介绍。然而,通过简单的研究,很容易就能发现它其实是播放SWF的。

中国卡通截图集
根据这堆破图,应该能够判断这个程序是从其网站(具体地址需要抓包才知道,反正那个游戏列表是http://m.jqbar.com/。)下载某些东西到本地,然后运行的玩艺。
此App有个把网站上的那些可以播放的小游戏或者PV之类下载到本地的选项。

保存到本地功能

随便点了一个纵版、一个横版的小游戏和一个PV(某神曲的),下载到本地。
由于这个Touch四代乃越狱机,直接用iFunBox打开这个App的安装目录。Documents下没有内容,再找了一下,发现存在本地的东西在/var/mobile/Applications/安装目录/Library/Documentation/local/下,里面赫然放着三个swf文件。果断拷出来丢进浏览器,结果神了,真是Flash的swf文件无疑。

本地文件保存位置
至于那个cfg文件呢?打开来看,看起来有两种结构。游戏的是一种,动画的是另一种。
它们都是UTF-8编码的类XML文件,其共有结构如下:





	
	
	 
	 
	
		

对于游戏,operate_define、sound_define里还包了东西,而且还有另外结构。。


  
  
  
  
   
   
   
   
   
   
  
 
  
 
	
  里面是一个UTF-8的HTML...  

下一步得试试看能不能把自己的Flash SWF文件放进这个app让它播放。首先试试IOSYS的几个东方Flash PV,直接套用那个神曲MV的.cfg,也不管那个content_ID了,直接丢进去。出人意料的是,居然直接播放成功。貌似此app目前并不会真正验证那个ID。
至于播放速度,那就很雷了(很可能是touch4本身就不够快的原因),目测就10-13fps的样子。顺便说说,国内的Flash PV很少像IOSYS的那样,用25fps以上的时基做的,长期以来都是如此,不知为何。

9

魔理沙偷走了重要的东西

受兔
至于游戏,就得根据游戏本身的键位自己修改虚拟键盘touch_define(其实应该还有重力感应的define,我没下重力感应的游戏来研究)。结果测试了三个Flash游戏,DOOM Flash版,两个打飞机,分别用雷电2.cfg、陨石大战.cfg修改,丢进去。
结果,DOOM Flash版无法运行(一直显示正在载入),其他两个游戏运行极为缓慢。然而最要命的是,这个虚拟键盘不支持通过多点触摸实现多个键同时按下,导致这两个STG基本没法玩。。。。

IMG_弹幕奇谈

当然这个app最大的问题是,不对应视网膜显示和iPad屏幕。Flash是矢量格式,在高分屏上变成马赛克是非常丑陋的。据某有iPad2的测试,iPad2上这个app运行swf的速度可以比Touch4快1倍。。。
这个App的纪念意义是很大的,毕竟App Store之前没出现过能完全离线播放本地Swf文件的任何App。但是由于该App可以从外部下载任意数据并运行,潜在地违反了开发者协议的某条款。如果有高人分析出了其Flash解释器的漏洞,攻击该app使用的网页,插入恶意Swf,那么就囧了。因此我看苹果一旦再次审核这个,很可能有下架的危险。

进 一步从那个http://m.jqbar.com/入手,发现这个jqbar和这个应用开发者之间的关系有待研究,因为jqbar自己也有类似的可以播放Flash的应用——请参考http://www.jqbar.com/Download/。由于日本的Store这个没上架,我只能下左边那个破解专用版来一试。


果然,无论是界面,还是功能来看,甚至是.app的文件名,本地文件与Cache存放的目录,这个集趣游戏都和中国卡通几乎一样,只不过界面控件是原生的。再仔细看那个“大款工作室”,找找他们发布的其他App你肯定会发现它其实就是这个集趣,或者百玩的马甲!有此等神技术的公司,为何还闷着做这种偷偷摸摸,应用介绍里连Flash的大名都不敢提起的app呢?从他们的官方博客来看,他们的程序是今年才开始上架的,貌似性能上还有很多问题。再看他们的论坛,还可以发现早就被广告机所完全占领了。。。
我没仔细看中国卡通和这个集趣吧的.app里面的可执行文件和资源文件,搜索字串adobe 找到的都是用ImageReady/PS做PNG写入的metadata,搜shockwave找到的只有一个mimetype。倒是里面那个D.dat,是libmad GPL MP3解码库的一个头文件,又看不到有libmad的动态库,看来这App可能还涉及到违反GPL;fonts.fnt貌似是个结构不明的字体文件;还有 几个dat貌似是MP3解码IDCT用的查找表。
估计腾讯什么的可以考虑把这帮人收编过去,好好研究下他们怎么在iOS平台直接播放swf的。我看,很可能还是用了类似Gnash的开源库实现的,除非开发者有这工夫把执行文件里有关Adobe的字串全部干掉或者干脆把可执行文件加壳(PS:AppStore app的可执行文件加了壳,苹果会怎么去审核它呢?)

录了这个中国卡通运行时的视频,用TVOut2+电视卡录的,经过编辑(旋转屏幕),由于Atom CPU在XP下和x264vfw兼容不佳,7-8分钟出现了黑屏。。

现在真有很多人以为Flash=Flash视频,其实完全不然。如果仅仅是要播放Flash视频只要把Flash所访问的视频地址解析出来并制作个flv拆包器、部分解码器(仍然有不是H264+AAC的FLV存在,需要自己解码)就完成了大部分工作,但要本地解析播放一般性的Flash .swf,远不是这么简单。Flash插件现在的复杂度接近一个没有底层的操作系统,有核心的矢量引擎,有各种I/O,有AVM/AVM2 Actionscript虚拟机。。。总之绝非是短期就能开发出来的东西,更不是靠服务器端解析(除非你有低延迟和高带宽,可以使用类似VNC的协议去和服务器流畅连接)就能轻易在客户端形成流畅的Flash体验的。

老乔所最痛恨的东西——Flash .swf播放器上了AppStore》有37个想法

  1. 秦大少

    太技术,勉强看了个大概!
    现在开始讨厌Flash了,win7下开个Flash的网页游戏也卡的死,甚至能把笔记本搞死机!!! :16:

    Google Chrome 13.0.782.112 Google Chrome 13.0.782.112 Windows 7 Windows 7
    回复
  2. tojary

    Flash确实越来越耗系统资源了,这东西对便携设备续航的杀伤力不小的说,以前见过S60上一些用Flash做屏保的软件,那个够坑爹的 :20:

    Firefox 5.0.1 Firefox 5.0.1 Windows 7 Windows 7
    回复
  3. 葛大猫

    我也是非常不喜欢flash的,在做网页的时候也从来不使用flash,宁愿使用jq来完成特效

    Maxthon 3.3.4.4000 Maxthon 3.3.4.4000 Windows 7 x64 Edition Windows 7 x64 Edition
    回复
  4. 覃弟

    百玩比中国卡通好用,中国卡通播放一会会自动退出、、、不过两个都要在/var/mobile/Applications/安装目录/Library/Documentation/下面自己建立local文件夹,然后将.swf文件存入该文件夹就OK了

    Internet Explorer 8.0 Internet Explorer 8.0 Windows 7 Windows 7
    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注