`
smithfox
  • 浏览: 55411 次
  • 性别: Icon_minigender_1
  • 来自: hf
社区版块
存档分类
最新评论

[原] FlashDevelop导出swc插件(exportswc)的问题及解决方法

阅读更多

 

[说明: 本文为 http://www.smithfox.com/?e=42 原创, 转载请注明原文, 谢谢]

因为机器不能装Flash Builder,只能用FlashDevelop,所以必须要研究这个(真的很烦呀)。还是Flash Builder好呀(不过要钱)。

FlashDevelop不能建立Library工程, 有人做了一个插件可以导出swc文件, 在FD界可谓小有名气。

它就是 Export SWC。不过非常遗憾,这个插件不支持SWC manifest的配置(它菜单的tooptip显示的manifest指的是它自己生成的 编译配置文件 obj\xx.flex.compc.xml ).

还是自己动手改造吧.

研究发现这个插件的Build All动作先是生成编译配置文件 obj\xx.flex.compc.xml, 然后再调用 compc.exe -load-config+="xxx\obj\xxx.flex.compc.xml" . 所以我们只需要改造这个配置文件. 并且 以后每次都只能调用 Compile Targets, 以避免插件重新生成配置文件覆盖了修改(这个很不爽).

主要改造如下 (注意看注释):


<?xml version="1.0"?>
<flex-config xmlns="http://www.adobe.com/2006/flex-config">
  <output>D:\workspace\flex_workspace\smf\.\bin\smf.swc</output>
  <use-network>true</use-network>
  <target-player>10.1</target-player>
  <warnings>true</warnings>
  <benchmark>false</benchmark>
  <compiler>
    <accessible>false</accessible>
    <allow-source-path-overlap>false</allow-source-path-overlap>
    <optimize>true</optimize>
    <strict>true</strict>
    <es>false</es>
    <show-actionscript-warnings>true</show-actionscript-warnings>
    <show-binding-warnings>true</show-binding-warnings>
    <show-unused-type-selector-warnings>true</show-unused-type-selector-warnings>
    <use-resource-bundle-metadata>true</use-resource-bundle-metadata>
    <verbose-stacktraces>false</verbose-stacktraces>
    <source-path>
      <path-element>d:\workspace\flex_workspace\smf\src</path-element>
    </source-path>
    
    <!-- namespaces 是我手动增加的, 还必须要将flex sdk的带上, 否则因为覆盖了SDK默认的flex-config.xml中的
    namespaces项, 就没有了默认的namespace声明,编译会报错。
    ${flexlib}变量, 编译器认识, 会自动定位到Flex SDK home的frameworks目录
     -->
    <namespaces>
         <namespace>
            <uri>http://ns.adobe.com/mxml/2009</uri>
            <manifest>${flexlib}/mxml-2009-manifest.xml</manifest>
         </namespace>
         <namespace>
            <uri>library://ns.adobe.com/flex/spark</uri>
            <manifest>${flexlib}/spark-manifest.xml</manifest>
         </namespace>
         <namespace>
            <uri>library://ns.adobe.com/flex/mx</uri>
            <manifest>${flexlib}/mx-manifest.xml</manifest>
         </namespace>
         <namespace>
            <uri>http://www.adobe.com/2006/mxml</uri>
            <manifest>${flexlib}/mxml-manifest.xml</manifest>
         </namespace>
         <!-- 这个是我自己的namespace -->
         <namespace>
            <uri>http://www.smithfox.com</uri>
            <manifest>D:\workspace\flex_workspace\smf\src\manifest.xml</manifest>
         </namespace>
    </namespaces>
  </compiler>
  
  <!-- 这个也是新增加的 -->
  <include-namespaces><uri>http://www.smithfox.com</uri></include-namespaces>
  
  <include-classes>
    <class>com.smithfox.components.C1</class>
    <class>com.smithfox.components.C2</class>
    <class>com.smithfox.components.C3</class>
  </include-classes>
</flex-config>
 

还有一种方法,就是干脆不用这个插件,写Ant脚本直接编译:

build.xml 直接放在项目根目录,注意看注释

<?xml version="1.0"?>
<!--
所用到的参考网址:
http://hi.baidu.com/liyunluck/blog/item/cc5692ccd9863d35b700c845.html
http://livedocs.adobe.com/flex/3/html/help.html?content=compilers_22.html#250507
http://www.oreillynet.com/pub/a/oreilly/digitalmedia/helpcenter/flex3cookbook/chapter21.html
http://ant.apache.org/manual/Tasks/pathconvert.html
http://ant.apache.org/manual/Types/mapper.html
-->
<project name="smf.swc" basedir="." default="dist">
  <!-- 已经有了 ant 默认的 basedir, 就不要再创建什么 project.dir 之类的了 -->
  
  
  <property name="name" value="${ant.project.name}"/>
	
  <!-- 因类compc认死了这个名字,所以请不要改FLEX_HOME这个名字了 -->
  <property name="FLEX_HOME" value="D:\flash\flex_sdk_4.1.0.16076_mpl" />
  
  <!-- 为了不再创造新的名字,就沿用Flex SDK中的flex-config.xml中的flexlib变量名, 指的都是一个目录 -->
  <property name="flexlib" value="${FLEX_HOME}\frameworks" />
  
  <!-- 这个是flex做的ant插件,必须先加载 -->
  <taskdef resource="flexTasks.tasks" classpath="${FLEX_HOME}\ant\lib\flexTasks.jar" />

  <property name="output.file" value="${name}" />

  <target name="dist" depends="clean, compc" />

  <!-- 遵循FlashBuilder和FlashDevelop的目录结构, 就用bin目录作为output所在的目录 -->
  <target name="clean">
         <delete dir="${basedir}\bin" failonerror="true"/>  
         <mkdir  dir="${basedir}\bin"/>
  </target>

  <target name="compc">
  
    <!-- 包含所有文件, 而不仅仅是as文件, 还包含了mxml文件和图片文件 -->
    <fileset dir="${basedir}\src" id="sources">
      <include name="**\**"/>
    </fileset>
    
    <!-- 遍历src目录下的所有as和mxml文件, 以生成 include-classes列表, 
    最终是类似于 'com.smithfox.class1 com.smithfox.class2' 的以空格隔开的字符串  
    这个ant task比较难理解, 相比网上写的, 我加了mxml文件的类名转换, 否则mxml将不会编译
    -->
    <pathconvert
      property="included.classes"
      pathsep=" "
      dirsep="."
      refid="sources">
      <map from="\" to="/"/>
      <map from="src\" to=""/>
      <mapper>
        <chainedmapper><globmapper from="${basedir}\*.mxml" to="*"/></chainedmapper>    
        <chainedmapper><globmapper from="${basedir}\*.as" to="*"/></chainedmapper>    
      </mapper>
    </pathconvert>

    <!-- 打印到screen, 以使确认一下, 如果太多,可以删除这行 -->
    <echo message="${included.classes}" />
    
    <!--
    <compc output="${basedir}\bin\${output.file}"
      include-classes="${included.classes}"
      optimize="true"
      benchmark="true"
      strict = "true"
      debug="false"
      as3="true"
      actionscript-file-encoding = "utf-8"
      allow-source-path-overlap = "true"
      use-resource-bundle-metadata = "true"
      >
      -->
    <compc output="${basedir}\bin\${output.file}"
      include-classes="${included.classes}"
      >
        <!-- 源文件所在路径 -->
        <source-path path-element="${basedir}\src" />
        
        <!--如果类库做了国际化,那么需要引入国际化资源文件,
        也就是工程目录\locale\下面的所有资源文件(类型为.properties)-->
        <!--
        <source-path path-element="${basedir}\locale\en_US"/>
        <source-path path-element="${basedir}\locale\zh_CN"/>
        -->
        
        <!-- 
        需要指定引用图片的资源文件,否则在编译好的mx文件夹下的所有图片都是0字节,
        上面这句话, 是保留自原作者的, 但是我将其comment, 没有出现什么问题
        -->
        <!--
        <source-path path-element="${FLEX_HOME}\frameworks\projects\framework\src"/>
        -->
        
        <!-- List of SWC files or directories that contain SWC files. -->
        <!-- 这里可以指定类库文件的目录
        我没有用到3rd lib, 同时我也将FLEX_HOME也comment也,一切都正常
         -->
        <!--
        <compiler.include-libraries dir="${FLEX_HOME}" append="true">
          <include name="/frameworks/libs/*.swc"/>
        </compiler.include-libraries>
        <compiler.include-libraries dir="." append="true">
          <include name="/lib/*.swc" />
        </compiler.include-libraries> 
        -->

        <!-- 下面是声明SDK 的manifest和自己的manifest 
        SDK的manifest必须要加, 否则编译报错
        -->
        <namespace uri="http://ns.adobe.com/mxml/2009" manifest="${flexlib}/mxml-2009-manifest.xml" />
        <namespace uri="library://ns.adobe.com/flex/spark" manifest="${flexlib}/spark-manifest.xml" />
        <namespace uri="library://ns.adobe.com/flex/mx" manifest="${flexlib}/mx-manifest.xml" />
        <namespace uri="http://www.adobe.com/2006/mxml" manifest="${flexlib}/mxml-manifest.xml" />
        <namespace uri="http://www.smithfox.com" manifest="${basedir}\src\manifest.xml" />
        <include-namespaces uri="http://www.smithfox.com" />
    </compc>
</target>  
</project>

 

[说明: 本文为 http://www.smithfox.com/?e=42 原创, 转载请注明原文, 谢谢]

 

分享到:
评论

相关推荐

    FlashDevelop导出SWC

    之前一直有用FD(FlashDevelop)的swc导出工具,今天一同事问起,顺便在这里推荐给大家。 在http://sourceforge.net/projects/exportswc/ 已经是开源的项目了,有兴趣可以看看源代码的。 只要你安装了Flash...

    ExportSWC4.2

    ExportSWC4.2插件的出现,解决了手动创建和管理SWC文件的繁琐问题。这款插件专为FlashDevelop集成开发环境(IDE)设计,它提供了一种便捷的方式来导出项目中的类库为SWC文件。FlashDevelop是一款免费、开源的...

    Flash Develop 不可不用的好插件

    Flash Develop内置了强大的调试器,支持断点、单步执行、变量查看和性能分析等功能,使开发者能深入理解代码运行过程,快速定位和解决问题。与Adobe Flash Player和独立的AIR运行时紧密集成,使得调试过程更加顺畅。...

    FlashDevelop swc克星

    你是否在为看不到swc文件的源码而感到发愁,你是否曾因为解压swc只看到swf而感到郁闷,现在你...所有问题,FlashDevelop,绝对是个好软件,强大的AS2及AS3提示功能,强大的SWC文件查看功能,这个小小的软件就能轻松解决

    flash actionscript3游戏开发之 用FlashBuilder生成swc的方法_亲测成功.zip

    例如,“lj解决了Flash Builder无法生成swc的问题.txt”可能包含了开发者在遇到这类问题时的解决方案。这可能涉及到清理项目、检查编译设置、更新Adobe AIR或Flash Player SDK,或者重新安装FlashBuilder等方法。 7...

    FlashDevelop学习教程

    ### FlashDevelop学习教程知识点梳理 #### 一、安装与配置 **1.1 FlashDevelop的安装** - **必备条件**: - .Net Framework 2.0 或更高版本。 - JDK 1.5。 - Flex SDK 3.0。 - **安装提示**: - 在安装过程...

    FlashDevelop + FlashPlayer11(Molehill) + Away3D 4.0 Alpha配置

    ### FlashDevelop + FlashPlayer11(Molehill) + Away3D 4.0 Alpha 配置详解 #### 一、前言 随着3D技术在Web领域的应用日益广泛,Adobe Flash平台也推出了针对3D图形处理的支持。其中,FlashPlayer11通过引入代号为...

    playerglobal.swc 10.1

    《深入解析FlashDevelop中playerglobal.swc 10.1的重要性及使用》 在Adobe的Flash开发环境中,playerglobal.swc文件扮演着至关重要的角色。它是一个包含Flash Player运行时库的组件,提供了与ActionScript 3.0交互...

    flash develop 开发工具IDE

    4. **编译与发布**:Flash Develop能够直接将源代码编译成SWF或SWC文件,同时也可以发布为AIR应用程序,方便在桌面或移动设备上运行。 5. **集成开发环境**:Flash Develop与其他开发工具如Flex SDK、Apache Flex或...

    FlashDevelop4.0.1RTM汉化

    7. **社区支持**:FlashDevelop有一个活跃的开发者社区,用户可以在论坛上交流技术问题,获取最新的插件信息,甚至参与到项目的开发和改进中。 总的来说,FlashDevelop 4.0.1RTM汉化版是一个为中文用户量身定制的...

    多个关键字请用空格分隔,F:\Fl实例\flash组件.swc

    不支持HTML标签.F:\Fl实例\flash组件.swc

    Flash ui 5.5.swc

    Flash开发的项目可以使用的原生UI,挺好用的,对于开发自主的小功能软件非常有用。

    open flash chart 2 swc包

    open flash chart 2 的swc文件包 可以在flex里面调用了. [Bindable] private var chart:String='{ "elements": [ { "type": "bar","alpha":0.8,"colour":"#663366", "values": [ 0 ] } ], "title": { "text": "...

    Flash AS3与JAVASCRIPT通信,读取图片,生成SWC

    - **工具**:除了Flash Professional和Flex Builder,还可以使用命令行工具如FlashDevelop或Apache Flex SDK来创建和管理SWC库。 结合这些知识点,你可以创建一个交互式的Web应用,让Flash组件通过JavaScript与...

    FlashDevelop Assets Packager Plugin:FlashDevelop 插件,用于制作资产库 swc 和 swf。-开源

    AssetsPackager 是 Fl​​ashDevelop( http://www.flashdevelop.org ) 的插件。 安装 AssetsPackager Plugin 时,只需右键单击文件夹并选择“Package assets”,即可生成用于嵌入资产的资产库 SWF、SWC 和 AS3 代码...

    Flex使用as3xlsUTF8.swc库文件导出Excel

    这通常通过在Flex Builder或Flash Builder中右键点击项目,选择“属性”&gt;“ActionScript编译器”&gt;“库路径”&gt;“添加SWC”,然后找到并添加`as3xlsUTF8.swc`来完成。 2. **创建Excel对象**:在代码中,你可以创建一...

    swc-loader:SWC的Webpack插件

    SWC加载器该软件包允许使用swc和webpack转换JavaScript文件。安装npm i --save-dev @swc/core swc-loader webpack用法module: { rules: [ { test : / \. m?js $ / , exclude : / ( node_modules | bower_components ...

    FlashDevelop-4.3.0-RTM

    FlashDevelop-4.3.0-RTM flash AS语言开发工具。 flashdevelop为ActionScript(2&3)和HAXE发展提供了一流的支持。完成代码生成,编译和调试,项目很多项目模板,SWF / SWC勘探等全集也与源代码控制支持一个web开发...

    Flash APE(swc,chm)

    Flash APE为Flash 物理引擎。其实很久以前就有,这次自己整理一下,swc中修改了vector为VectorAPE,这次不是增强版。chm也为英文文件。swc文件已经测试可用。chm资料是从官网上考贝下来自己整理的。

    flexpaper2.0.6.SWC

    5. 开发教程:详尽的指导材料,帮助开发者解决问题并进行开发。 6. Flex Air支持:1.4.1.swc,使得FlexPaper可应用于桌面环境。 通过这些资源,开发者可以构建出功能齐全、用户体验优秀的在线文档查看应用,无论是...

Global site tag (gtag.js) - Google Analytics