守望者--AIR技术交流

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: ANE FlasCC 炼金术
查看: 940|回复: 0

[AIR技术] Flex编译器参数中-swf-version与-target-player之关系

[复制链接]
  • TA的每日心情
    擦汗
    2018-4-10 15:18
  • 签到天数: 447 天

    [LV.9]以坛为家II

    1742

    主题

    2094

    帖子

    13万

    积分

    超级版主

    Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

    威望
    562
    贡献
    29
    金币
    51823
    钢镚
    1422

    开源英雄守望者

    发表于 2015-1-7 15:37:36 | 显示全部楼层 |阅读模式
    • 2014-04-11更新:更新Flash Player 13.0/AIR 13.0正式版,加入对Flash Player和AIR的版本号开始同步的说明。
    • 2014-02-22更新:更新Flash Player 13.0/AIR 13.0 beta版。
    • 2014-01-18更新:更新Flash Player 12.0/AIR 4.0正式版。
    • 2013-12-11更新:更新Flash Player 11.9/AIR 3.9正式版。
    • 2013-04-16更新:更新Flash Player 11.7/AIR 3.7正式版。
    • 2013-03-10更新:更新Flash Player 11.6/AIR 3.6正式版以及beta 11.7。
    • 2012-11-07更新:更新Flash Player 11.5/AIR 3.5正式版发布日期。
    • 2012-10-10更新:加入Flash Player 11.5/AIR 3.5的对应关系;加入发布日期列;修改文章结构和部分内容。
    • 2012-08-27更新:加入Flash Player 11.4/AIR 3.4的对应关系。
    • 2012-03-20更新:本篇文章只讲了Flex SDK的情况,但Flash IDE也能通过修改配置文件的方式支持新的Flash Player功能,详见这里:让Flash支持更新的Flash Player功能
    • 2012-04-08更新:加入AIR的版本说明;加入Flash Player 11.3的对应关系。
    Flex 4.6 SDK中,可以发现framework/flex-config.xml中的默认-swf-version的值变成了14,而-target-player则变成了11.1。
    记得在Flash Player 10.2发布的时候,为了使用Flash 10.2提供的原生位图鼠标光标功能,需要在编译的时候将-swf-version编译器属性值设置为11。以此推算,14这个值是针对Flash Player 11.1的。
    那么-swf-version和-target-player的对应关系如何?见下表:

    FLASH PLAYERAIRFLEX-SWF-VERSION-TARGET-PLAYER发布日期
    9

    3
    9
    9

    10.0
    1.5
    4.0
    10
    10.0.0

    10.1
    2.0/2.5
    4.1
    10
    10.1.0

    10.2
    2.6
    4.5/4.5.1
    11
    10.2.0
    2011-2-9
    10.3
    2.7

    12
    10.3.0

    11.0
    3.0

    13
    11.0.0
    2011-10-4
    11.1
    3.1
    4.6
    14
    11.1
    2011-11-7
    11.2
    3.2

    15
    11.2
    2012-3-28
    11.3
    3.3

    16
    11.3
    2012-6-8
    11.4
    3.4
    Adobe Flex 4.6/Apache Flex 4.8
    17
    11.4
    2012-08-21
    11.5
    3.5
    Adobe Flex 4.6/Apache Flex 4.8
    18
    11.5
    2012-11-06
    11.6
    3.6
    Adobe Flex 4.7/Apache Flex 4.9
    19
    11.6
    2013-02-12
    11.7
    3.7
    Adobe Flex 4.7/Apache Flex 4.9
    20
    11.7
    2013-04-09
    11.8
    3.8
    Adobe Flex 4.7/Apache Flex 4.10
    21
    11.8
    2013-07-09
    11.9
    3.9
    Adobe Flex 4.7/Apache Flex 4.11
    22
    11.9
    2013-10-08
    12.0
    4.0
    Adobe Flex 4.7/Apache Flex 4.11
    23
    12.0
    2014-01-14
    13.0
    13.0
    Adobe Flex 4.7/Apache Flex 4.12
    24
    13.0
    2014-04-08
    -target-player和-swf-version
    上面的这份表格,一部分是根据Targeting Flash Player versions整理出来的,最新的部分是我自己根据Flash Player/AIR的更新不断增加的。但这个表格是不精确的。
    因为,-swf-version的值能支持到那个程度,其实与Flex SDK并没有直接的关系,而是依赖于Flex SDK中的playerglobal.swc(位于frameworks/libs/player)。
    打开Flex 4.6 SDK的frameworks/libs/player文件夹,可以看到其中只有一个11.1子文件夹,放置着针对Flash Player 11.1的playerglobal.swc。这个swc的作用有2个:
    (这里是基于Flex SDK和Flash Builder讲解,如果你使用Flash Professional,可以看这里:让Flash支持更新的Flash Player功能
    • 在程序编写期间,Flash Builder使用它来提供自动完成功能。当然,如果直接用mxml编译器(比如我),就没多大关系;
    • 在程序编译期间,mxmlc编译器需要调用它。
    那么-target-player是干嘛的?它用来告诉Flex编译器,在哪里去找playerglobal.swc。
    在Flash Builder 4.6 的项目的 ActionScrip编译器 设置中,可以设置-target-player参数的值。默认是“使用SDK所需的最低版本”。对于我目前安装的Flex SDK 4.6来说,这个“最低版本”就是11.1。
    而我们可以使用特定的版本,例如下图中是11.2.0。
    在程序编写期间,Flash Builder会自动去frameworks/libs/player/11.2这个目录中寻找playerglobal.swc,如果找不到,一些11.2才支持的功能(例如MouseEvent.RIGHT_CLICK)就无法得到语法提示。
    而在调试和发布程序的时候,编译器使用frameworks/libs/player/11.2/playerglobal.swc进行编译。如果依然找不到这个文件,编译会报错无法打开“D:\flex_sdks\4.6.0\frameworks\libs\player\11.2\playerglobal.swc”,如下图所示:
    不同步性
    在每个新版本的Flash Player 发布的时候,Adobe都一起提供了playerglobal.swc文件,而且会在发布文档中说明这个版本的Flash Player对应的-swf-version是多少。
    因为SDK的发布,和Flash Player的发布并非总是同步的
    在Flash 8时代,编译器和Flash Player是完全同步的。因为那时,只有Flash IDE可以生成swf文件。而Flex问世,以及MacroMedia被Adobe收购以后,Flash的发展就变得多样了,FlashIDE和Flex都可以生成swf文件,Flash Player的发展也更加独立。现在的情况,Flash CS,Flash Builder,Flex SDK,Flash Player的发布已经完全不同步了。尤其是当Adobe将Flex SDK交给Apache发展后,SDK的更新速度估计会更快。Adobe自己又会紧紧将Flash Player攥在手里,保持自己的步调来更新。(关于这段历史,我在Actionscript,AS3,MXML,Flex,Flex Builder,Flash Builder,Flash,AIR,Flash Player之关系一文中做了详述)
    Flex SDK可以和不同版本的Flash Player相配。即使是使用Flex SDK 3.6,同样也可以开发出Flash Player 11.1支持的swf程序。(当然,前提是不使用Flex frameworks提供的组件,仅仅使用Flash Player提供的API)。通过使用不同版本Flash Player提供的playerglobal.swc文件,就可以让旧的Flex SDK兼容新的-swf-version和 -target-player编译属性。当然,也可以让新的Flex SDK兼容旧的-swf-version和-target-player。
    例如,目前Adobe官方提供的最新版(也是Adobe Flex的最终版,因为后面会更名为Apache Flex SDK)Flex SDK版本为4.6。根据Adobe的说法,这个版本的Flex SDK的最低支持的-target-player为11.1。这是因为frameworks/libs/player中仅仅提供了11.1版本的playerglobal.swc。我们可以将其他版本的playerglobal.swc复制到该目录下,并修改frameworks/flex-config.xml中的target-player标签,以改变Flex SDK默认编译的swf目标。当然,更方便和灵活的做法是在Flex项目的编译属性中设置-target-player属性。
    Flash Player 和 AIR 的版本号同步
    AIR Runtime在Flash Player的10.0版本的时候才发布了1.5版本,这导致了这两位的版本号一直不同步。
    在2014年4月14日,Adobe终于做出了一个“重要的”决定,就是让它们的版本号同步!此时,Flash Player和AIR的版本号同为13。
    其实它们的底层本来就没什么大的不同,只是AIR增加了一些专用的本地API而已。所以我个人认为或许把它们的名字改成 Adobe Runtime for BrowserAdobe Runtim for Desktop 更好些。
    这里还有一篇文章介绍:Versioning in Flash Runtime (-swf-version)

    关联文章
    本文来自:http://zengrong.net/post/1486.htm




    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    
    关闭

    站长推荐上一条 /4 下一条

    QQ|手机版|Archiver|网站地图|小黑屋|守望者 ( 京ICP备14061876号

    GMT+8, 2020-2-23 10:16 , Processed in 0.065151 second(s), 37 queries .

    守望者AIR

    守望者AIR技术交流社区

    本站成立于 2014年12月31日

    快速回复 返回顶部 返回列表