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

标签: ios 软件试用 iphone ipad 电脑网络 | 发表时间:2011-07-25 10:37 | 作者:yksoft1 est
出处:http://www.lolibeta.com

众所周知,苹果的老乔一贯讨厌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文件,其共有结构如下:

<?version="1.0" encoding="UTF-8" ?>
<!DOCTYPE config SYSTEM "config.dtd">
<!-- 文件类型声明 -->
<defines>
	<file_info content_ID="1b97fb3e99db3bc7" content_level="10" zcontent_type="media" mobile_operate_type="Touch_Nopad" />
	<!-- 文件ID(貌似是某种UUID?),其他的除了游戏多一个hotkey_for_zoom属性外没有 -->
	 <operate_define />
	 <display_define screen_direction="Horizon" zoom_size="Fit" quality="high" />
	<!-- 显示定义,横屏竖屏(Horizon和Vertical),放大,Flash的质量之类 -->
	<sound_define  />	
</defines>
<!-- 定义部分 -->

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

<operate_define default_mouse_move_pace="." default_long_press_lock_time="." touchsize="." >
  <mouse_normal_define name="模拟鼠标" />
  <mouse_table_define name="模拟菜单" />
  <!-- 和鼠标模拟触屏相关的参数,默认移动速度,长按锁定,触摸屏感应大小什么的 -->
  <touch_define>
   <touch_map button_name="left" org="2" button_hor_pos="10" button_ver_pos="20" button_map_to="37" />
   <touch_map button_name="down" org="2" button_hor_pos="70" button_ver_pos="20" button_map_to="40" />
   <touch_map button_name="right" org="2" button_hor_pos="130" button_ver_pos="20" button_map_to="39" />
   <touch_map button_name="up" org="2" button_hor_pos="70" button_ver_pos="80" button_map_to="38" />
   <touch_map button_name="a" org="3" button_hor_pos="20" button_ver_pos="20" button_map_to="17" />
   <touch_map button_name="b" org="3" button_hor_pos="20" button_ver_pos="80" button_map_to="32" />
  </touch_define><!-- 虚拟键盘,button_name不言而喻,org貌似是组别(?),button_hor_pos和button_ver_pos是按钮的位置(相对于屏幕左下角),
	button_map_to是虚拟键盘对应的编码,除开方向键外其它都是对应的ASCII码 -->
 </operate_define>
 <sound_define mute="false" volume="4" sound_device="Speaker" /> <!--声音音量 -->
 <network_define score_type="var" score_var_name="_level0.score" submit_url="http://m.jqbar.com/submit.aspx" autotag="296@297" />
	<!--似乎是和在线提交得分相关的,那个score_var_name应该是指AS本地存储的变量名吧 -->
 <txt_define> 里面是一个UTF-8的HTML... </txt_define> <!-- 貌似是游戏的帮助信息 -->

下一步得试试看能不能把自己的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] 推荐:

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

- est - wettuy&#39;s blog
众所周知,苹果的老乔一贯讨厌Flash. 这应该和从Macromedia时代开始,Mac OS X的Flash插件一贯优化差,极端情况下可以让Mac笔记本仅仅开浏览器的情况下,电池待机时间减少一半以上有关. 基 于这个理由,加上Flash并非为触摸屏设计的东西,从2007年iPhone初代开始,苹果一贯不准备把Flash引入到iOS上,App Store早期甚至明令禁止任何通过模拟/虚拟手段而非原生的应用.

开源的 Flash swf 反编译工具

- - 鲁塔弗的博客
为了自定义腾讯自选股的flash K线图. 我想弄清楚它如何传输数据的,看起来不想是通过flashvar传入,所以把swf文件download下来,反编译看看代码 ,一目了然啊.. 网上找了一圈swf反编译工具,如下这个可以用. JPEXS Free Flash Decompiler, 百度网盘下载,这是用java开发的开源软件,运行需要先安装jre环境.

Flash動畫播放、擷取、編譯工具,Sothink SWF Decompiler 6.5.0.3719 多國語言免安裝版!

- Amo - 【宅科技】Google Blogger
【軟體名稱】:Sothink SWF Decompiler 6.5.0.3719. 【作業系統】:Windows(含Win7). 【軟體語言】:多國語言免安裝版. 【軟體類型】:Flash動畫播放、擷取、編譯. 碩思閃客精靈(Sothink SWF Decompiler)是一款專業的Flash動畫解編譯工具,它能同時解析並還原多個SWF檔成為原始FLA或FLEX工程檔.

SWF轻松转换HTML5

- - TwaMix
自从乔老大宣布IOS平台不会支持flash后,异议者不断,不过还是古话说的好——时间是检验真理的唯一标准. 经过这几年的证明,如今HTML5如日中天,这一切都有赖于IOS的推波助澜. 不过对于简单的SWF,如果要实现同样的功能,转换总是比重写好,今天我向大家介绍两款转换工具. Google swiffy:Google labs总是会给人惊喜的,最近推出了一个新的服务Google swiffy,可将SWF轻松转换成Html5.

flash存储器(NOR Flash和NAND Flash)

- - CSDN博客推荐文章
Flash存储器经历了最初应用于个人计算机BIOS( basic input output system)存储、嵌入式系统的标准存储器,到目前在某些笔记本电脑中代替磁盘作为外存储器,并被引入到企业级存储的高端存储阵列中,Flash存储技术已经得到很大的发展. 作为一种电可擦除可编程只读存储器,Flash存储器不但能在不移除存储芯片的情况下进行擦除和编程操作,还具有非易失性、固态性、体积小、重量轻、抗震动、高性能、低能耗等优点.

Flash之死

- - 技术改变世界 创新驱动中国 - 《程序员》官网
文 / Francisco Kattan. Adobe公司决定停止面向移动浏览器的Flash开发工作,但导致Flash最终失败的原因却不甚明朗. VisionMobile特邀作者Francisco Kattan撰文就导致Flash消亡的一连串事件进行了分析. 自Adobe宣布将停止开发面向移动浏览器的Flash以来,人们就展开了激烈讨论,很多Flash开发人员表示惊诧和怀疑,分析师们不停地放马后炮,甚至有人恳请Adobe辞退首席执行官.

如何禁用flash

- - 膘叔
本来是不想禁用的,但发现机器的风扇就一直没停过,CPU消耗的最大的就是firefox下的flash插件 .没辙了.我还是禁用它吧. 嗯flashblock即可,但其实我是想从软件的底层就直接禁用它.可惜没有好的办法....只能用插件了.网上类似的教程还有很多,比如这个:. 内容来源:http://orzl.com/weblog/disable-the-flash-on-mac.

Google Swiffy把Flash变成HTML5

- Caiwangqin - 36氪
由于Flash被苹果拒之门外,很多开发者在开发产品时都不得不在Flash和HTML5之间做出选择. 今天Google发布的一个新工具让天平再次偏向HTML5这边,它就是Swiffy. Swiffy可以把Flash文件转换成HTML5标准. 该项目源于Google移动广告团队,开发动机就是有些设备不支持Adobe的格式,因此无法显示Flash动画.

Flash与HTML5性能比较

- frocket - Solidot
Rinick 写道 "近日,一项评测向人们证明了:HTML5在性能上仍远远落后于Flashplayer. 测试使用了Droid X, Nexus One, Desire HD, Atrix, PlayBook, Galaxy Tab, Xoom 等设备,分别测试了位图,矢量图,数值运算,视频播放等项目.

HTML5&Flash之粗知浅见

- Neo - FeedzShare
来自: 网易用户体验设计中心官方博客 - FeedzShare  bullog.org - FeedzShare  . 发布时间:2011年08月03日,  已有 2 人推荐. 比较头大的是Flash又插入不进来了,无奈请您移步 点击这里 先去看一段动画展示:. HTML(Hyper Text Mark-up Language)即超文本标记语言.