让旧版本的 Flash IDE 支持更新的 Flash Player/AIR 功能

2015-04-03更新: 加入更新 Adobe AIR 的相关内容。

今天在论坛上看到一篇文章:H264VideoStreamSettings无法在cs4里面使用吗?,并做了回复。记录在这里,希望对更多的人有帮助。

H264VideoStreamSettings是Flash Player 11才开始支持的功能,但目前Aodbe发布的最新版的Flash CS5.5,都不支持将Flash Player 11作为目标播放器版本发布。这个问题很容易解决,但涉及到的东西却比较多,我在这里将一一讲解。

首先来个Setp by Step,这里以Flash Player CS5.5为例,但Flash CS4也没有问题(Flash CS3我就不确定了):

第一步 首先下载最新的 playerglobal.swc(基于Flash Player11):

第二步 将其复制到 FlashCS5.5\CommonConfiguration\ActionScript 3.0\FP11.1 ,没有这个文件夹请自行建立;

第三步 复制 FlashCS5.5\CommonConfiguration\Players\FlashPlayer10_1.xml 为 `FlashPlayer11_1.xml;

第四步 用 NotePad++/EditPlus/UltraEdit (但不要用windows Notepad,避免换行符问题)之类的软件打开 `FlashPlayer11_1.xml ,修改以下内容:

第3行修改为:

1<player id="FlashPlayer11.1" version="14" asversion="3">

第4行修改为:

1<name>Flash Player 11.1</name>

第8行修改为:

1<playerDefinitionPath as2="$(UserConfig)/Classes/FP10;$(UserConfig)/Classes/FP9;$(UserConfig)/Classes/FP8;$(UserConfig)/Classes/FP7" as3="$(AppConfig)/ActionScript 3.0/FP11_1/playerglobal.swc" />

这是我修改好的,可以直接用:

 1<?xml version="1.0" encoding="UTF-8"?>
 2<players>
 3  <player id="FlashPlayer11.1" version="14" asversion="3">
 4   <name>Flash Player 11.1</name>
 5   <path builtin="true"/>
 6   <path platform="WIN">Device Central/adcdl.exe</path>
 7   <path platform="MAC">Device Central/adcdl</path>
 8   <playerDefinitionPath as2="$(UserConfig)/Classes/FP10;$(UserConfig)/Classes/FP9;$(UserConfig)/Classes/FP8;$(UserConfig)/Classes/FP7" as3="$(AppConfig)/ActionScript 3.0/FP11_1/playerglobal.swc" />
 9   <feature name="multiScreenPublish"               supported="true" />
10   <feature name="mobileAuthoringIntegration"           supported="true" />
11   <feature name="deviceSound"                  supported="false"/>
12   <feature name="exportStreamingSound"         supported="true"/>
13   <feature name="exportEventSound"             supported="true"/>
14   <feature name="FSCommand2"                   supported="false"/>
15   <feature name="gradient_linearRGB"           supported="true" />
16   <feature name="gradient_overflow"            supported="true" />
17   <feature name="shape_strokeHint"             supported="true" />
18   <feature name="shape_cap"                supported="true" />
19   <feature name="shape_join"               supported="true" />
20   <feature name="shape_mitre"              supported="true" />
21   <feature name="shape_scale"              supported="true" />
22   <feature name="linkage_exportForActionscript"    supported="true" />
23   <feature name="linkage_exportForRuntimeSharing"  supported="true" />
24   <feature name="linkage_exportInFirstFrame"       supported="true" />
25   <feature name="linkage_importForRuntimeSharing"  supported="true" />
26   <feature name="linkage_importAndAddToCache"      supported="false" />
27   <feature name="publish_localPlaybackSecurity"    supported="true" />
28   <feature name="publish_hardwareAcceleration"     supported="true" />
29   <feature name="symbol_blendMode"             supported="true" /> 
30   <feature name="actionScript_documentClass"       supported="true" />
31   <feature name="symbol_blendMode"             supported="true" />
32   <feature name="filters"              supported="true" />
33   <feature name="component_binding"            supported="true" />
34   <feature name="component_schema"             supported="true" />
35   <feature name="screens"              supported="true" />
36   <feature name="video"                supported="true" />
37   <feature name="deviceVideo"              supported="false"/>
38   <feature name="accessibility"            supported="true" />
39   <feature name="dynamic_text_kerning"         supported="true" />
40   <feature name="static_text_charwidth_nondeviceFont"  supported="true" /> 
41   <feature name="static_text_charwidth_deviceFont" supported="true" />
42   <feature name="advanced_anti_alias_text"         supported="true" /> 
43   <feature name="nine_slice_scaling"           supported="true" />
44   <feature name="runtimeNumberMinMax"          supported="true" />
45   <feature name="use8kSampleRate"                      supported="true" />
46   <feature name="useDefineFont4ForDeviceText"          supported="true" />
47   <feature name="useDefineFont4ForEmbeddedFonts"       supported="true" />
48   <feature name="textLayoutFramework"       supported="true" />
49   <encodingPresets>
50        <preset uuid="da5cac1a-417a-4d86-b7f7-ef21010a5d7d"  name="FLV - Match Source Attributes (High Quality)" ext="flv" default="true"/>
51    </encodingPresets>
52   
53   <testmenu> 
54    <menu name="ID_testInFlash" default="true"/>
55    <menu name="ID_testInDeviceCentral" />
56   </testmenu>
57
58   <debugmenu>
59    <menu name="ID_debugtInFlash" default="true"/> 
60    <menu name="ID_debugInDeviceCentral"/> 
61  </debugmenu>
62
63
64   </player>
65</players>

第五步 重新启动Flash CS5.5, 就可以看到新的发布设置生效了,在新建Fla文件的时候选择这个发布设置,就可以支持Flash Player 11.1新增的功能。如下图:

flash_publish

**第六步 为了能够播放和调试新生成的Flash Player 11文件,还需要更新DebugFlashPlayer,在 这里 下载。注意必须下载Debug版本:Windows Flash Player 11.1 Projector content debugger。如果不知道这些版本之间的区别,可以看看我写的这篇文章:有史以来关于Flash Player的最详细说明

第七步 下载了上面的文件后,将其复制到 FlashCS5.5\Adobe Flash CS5.5\Players\Debug,替换原来的FlashPlayerDebugger.exe。

下面是原理讲解(Flash IDE代指Flash CS4/CS5/CS5.5):

在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攥在手里,保持自己的步调来更新。

Flex SDK/Flash IDE可以和不同版本的Flash Player相配。即使是使用Flex SDK 3.6/Flash CS4,同样也可以开发出Flash Player 11.1支持的swf程序。通过使用不同版本Flash Player提供的playerglobal.swc文件,就可以让旧的Flex SDK/Flash IDE兼容新的Flash Player提供的功能,方法就是修改编译属性中的-swf-version和 -target-player编译属性。当然,也可以让新的Flex SDK兼容旧的Flash Player功能。

以上这段来自我写的这篇文章:Flex编译器参数中-swf-version与-target-player之关系,有修改。

2015-04-03 更新

Flash IDE 整合了 AIR SDK 之后,我们也经常需要将最新的 AIR SDK 更新到 Flash IDE 中。

在 Flash Professional CS6 中,参考这个官方帮助页面即可: Flash Professional Help / Overlay AIR

在 Flash CC 中,则已经在 Help 菜单中提供了 Manage Adobe AIR SDK... 命令可供配置。