Flex AsDoc 完整版

Flex 生成AsDoc用的是SDK自带的asdoc.exe工具

生成AsDoc文档的方式有两种:ant或者FlashBuilder 外部配置工具

方法一:外部配置工具

新增一个外部配置工具。步骤如下:



配置完成后,直接单击运行按钮就自动生成AsDoc文档了。(注:这种方式生成的AsDoc,main-title和window-title参数会出现中文乱码,目前没有解决。ANT方式不会有乱码。)

这里核心的部分就是asdoc.exe运行参数。常用参数说明:

参数名称

参数功能

-locale

资源类型(英文:en_US,中文:zh_CN…)

-doc-classes path-element[…]

指定需要被输出成文档的类文件(一般用doc-source指定要生成文档的源码目录),这些类文件必须放在资源路径下[默认参数]

该参数使用方法等同于compc组件编译器的-include-classes参数

-doc-namespaces uri manifest

要求被输出成文档的类文件URI列表,这些类文件必须放在资源路径下。

必须包含至少一个URI并指出命名空间内容的明确位置

-doc-sources path-element […]

需要被输出成文档的文件目录,并且其子目录也会被递归输出

-source-path path-element […]

源码所在路径(不太明白他和-doc-source的区别,发现不指定也能正常导出)

-exclude-classes string

不需要被输出的类文件列表,必须指定类名

-exclude-dependencies true|false

决定是否所有的相关类都会输出,如果设true,与输出类相关的类不回被输出。默认值为false

-footer string  

文档中HTML页面底部的显示信息

-left-frameset-width int

控制文档左边目录宽度的整数值。你可以根据你的包名来改变这个值

默认值是210px

-main-title string

文档中HTML页面头部显示信息, 默认值是”API Documentation”.

-output string

输出文档的目录名. 默认值 “asdoc-output”.

-package name “description”

输出文档中对应的包名。你可以指定一个以上的包,建议用-package-description-file方便点

-package-description-file path-element

包结构描述文件(见附件:packageDes.xml)

-library-path

AsDoc用到的库的路径

-keep-xml

When true, retain the intermediate XML files created by the ASDoc tool. The default value is false.


下面是我生成SWC库的asdoc.exe参数配置:

-locale zh_CN
-doc-sources src
-library-path+="D:\Program Files\Adobe\Adobe Flash Builder 4.7 (64 Bit)\sdks\4.6.0\frameworks\libs\air"
-footer "AsDocLib的帮助文档"
-main-title "AsDocLib帮助文档"
-left-frameset-width 200
-window-title "AsDocLib帮助文档"
-package-description-file packageDes.xml
-keep-xml

(注:lib库中引用AIR库,生成AsDoc会报错,需要加入:-library-path+="D:\ProgramFiles\Adobe\Adobe Flash Builder 4.7 (64 Bit)\sdks\4.6.0\frameworks\libs\air"

packageDes.xml文件内容如下:

<overviews>       
<packages>               
    <package name="com.asdoc.test.components">
       <shortDescription>                       
           <![CDATA[组件源码包]]>                       
       </shortDescription>
       <description> 
           <![CDATA[AsDocLib的组件包]]>                     
       </description>
    </package>
    <package name="com.asdoc.test.skins">
       <shortDescription>                       
           <![CDATA[组件皮肤包]]>                       
       </shortDescription>
       <description> 
           <![CDATA[AsDocLib的组件皮肤包]]>                     
       </description>
    </package>
    <package name="com.asdoc.test.utils">
       <shortDescription>                       
           <![CDATA[组件工具类]]>                       
       </shortDescription>
       <description> 
           <![CDATA[AsDocLib的组件工具类]]>                     
       </description>
    </package>
</packages>
</overviews>
 

方法二:ANT方式生成AsDoc

ANT方式生成AsDoc其实是将第一种方式弄成脚本化编译。

在lib工程src目录下面加上build.xml和build.properties(用过ant脚本化编译的人都知道)

build.xml内容如下:

<?xml version="1.0"?>
<!--
	版权所有 甘训奏 谢谢光临 (我不会告诉你是SDK地下的asdoc里面拷贝的)
	默认执行 main target
-->
<project name="ASDocs" default="main" basedir=".">
	<!--配置属性-->
	<property file="build.properties" />
	<property name="lenient" value="true"/>
	<property name="flexlib" location="${FLEX_HOME}/frameworks"/>
	<!--main target 依赖 clean 和 doc target-->
	<target name="main" depends="clean,doc" description="Clean build of all ASDocs"/>
	<!--clean target 清除AsDoc输出目录-->
	<target name="clean" description="Cleans all ASDocs">
		<delete dir="${OUTPUT_DIR}"/>
		<echo>清除${OUTPUT_DIR}</echo>
	</target>
	<!--doc target 生成AsDoc-->
	<target name="doc">
	    <condition property="asdoc.jvm.args" value="-Xmx512m">
	        <os family="windows"/>
	    </condition>
	    <condition property="asdoc.jvm.args" value="-Xmx1024m">
	        <os family="mac"/>
	    </condition>
	    <condition property="asdoc.jvm.args" value="-Xmx512m">
	        <os family="unix"/>
	    </condition>
	    <available property="flexTasksJar" value="${FLEX_HOME}/lib/flexTasks.jar" file="${FLEX_HOME}/lib/flexTasks.jar"/>
	    <available property="flexTasksJar" value="${FLEX_HOME}/ant/lib/flexTasks.jar" file="${FLEX_HOME}/ant/lib/flexTasks.jar"/>

		<!-- Load the <asdoc> task. We can't do this at the <project> level -->
		<!-- because targets that run before flexTasks.jar gets built would fail. -->
		<taskdef resource="flexTasks.tasks" classpath="${flexTasksJar}"/>

		<!-- Call asdoc to generate dita xml files -->
		<!-- 这里就是调用asdoc.exe执行脚本化编译了,对了 fork="true"会导致控制台中文乱码,别问为什么,我也不知道。 -->
		<asdoc output="${OUTPUT_DIR}" lenient="true" failonerror="true" warnings="false" strict="true" locale="en_US" fork="false" keep-xml="true">
			<!-- asDoc Infomation -->
			<window-title>asDocAPI标题</window-title>
			<main-title >asDocAPI文档</main-title>
			<footer>asDoc API 页脚 版权所有ganxunzou</footer>
			
			<!-- top level class to include in asdoc -->
		    
			<!-- source path for asdoc 根据目录生成AsDoc-->
			<compiler.source-path path-element="src"/>
			
			<doc-sources path-element="src"/>
			<!-- namespaces to include in asdoc -->
			<!-- 或者用这种,根据清单文件生成AsDoc。这种方式不太好,没有在清单文件的AsDoc不会生成。
				  清单文件一般写组件,不会加入皮肤,然后你懂的,AsDo文档里面没有皮肤
			-->
			<!--
			<doc-namespaces uri="library://ns.myasdoc.com/flex/myasdoc"/>
			<namespace uri="library://ns.myasdoc.com/flex/myasdoc" manifest="my-manifest.xml"/>
			-->
			
		    <namespace uri="library://ns.adobe.com/flashx/textLayout" manifest="${flexlib}/projects/textLayout/manifest.xml"/>

			<!-- namespace declaration for asdoc -->
			
		    <namespace uri="http://www.adobe.com/2006/airmxml" manifest="${flexlib}/projects/airframework/manifest.xml"/>
		    <namespace uri="http://www.adobe.com/2006/airspark" manifest="${flexlib}/projects/airspark/manifest.xml"/>
		    <namespace uri="http://www.adobe.com/2006/rpcmxml" manifest="${flexlib}/projects/rpc/manifest.xml"/>
		    <namespace uri="http://ns.adobe.com/2009/mx-mxml" manifest="${flexlib}/projects/mx/manifest.xml"/>
		    <namespace uri="http://www.adobe.com/2006/advancedgridsmxml" manifest="${flexlib}/projects/advancedgrids/manifest_advancedgrids.xml"/>
		    <namespace uri="http://www.adobe.com/2006/charts" manifest="${flexlib}/projects/charts/manifest_charts.xml"/>
		    		    
		    <namespace uri="http://www.adobe.com/2006/mxml" manifest="${flexlib}/mxml-manifest.xml"/>
		    <namespace uri="library://ns.adobe.com/flex/spark" manifest="${flexlib}/projects/spark/manifest.xml"/>
		    <namespace uri="library://ns.adobe.com/flex/mx" manifest="${flexlib}/mxml-manifest.xml"/>
			<namespace uri="library://ns.adobe.com/flex/spark-mobilecomponents" manifest="${flexlib}/projects/mobilecomponents/manifest.xml"/>
			<namespace uri="library://ns.adobe.com/flex/spark-dmv" manifest="${flexlib}/projects/spark_dmv/manifest_spark_dmv.xml"/>

			<library-path dir="libs" includes="*.swc" append="true"/>
			<library-path dir="${FLEX_HOME}/frameworks/libs" includes="*.swc" append="true"/>
			<library-path dir="${FLEX_HOME}/frameworks/libs/mobile" includes="*.swc" append="true"/>
			<library-path dir="${FLEX_HOME}/frameworks/libs/automation" includes="*.swc" append="true"/>
			
			<external-library-path dir="${flexlib}/libs/air">
		    	<include name="airglobal.swc" />
		    </external-library-path>
			<external-library-path dir="${flexlib}/libs">
		    	<include name="framework.swc" />
		    </external-library-path>
			<!-- lib中加入AIR库,必须加上下面两个,要不然你调试去吧 -->
			<external-library-path dir="${flexlib}/libs/air">
			   	<include name="airframework.swc" />
			</external-library-path>
			<external-library-path dir="${flexlib}/libs/air">
			   	<include name="airspark.swc" />
			</external-library-path>
			<jvmarg line="${asdoc.jvm.args}"/>
			<define name="CONFIG::debug" value="false"/>
			<define name="CONFIG::release" value="true"/>
			<define name="CONFIG::FLASH_10_1" value="false"/>
            <define name="CONFIG::LOGGING" value="false"/>
			<define name="CONFIG::performanceInstrumentation" value="false"/>            
		</asdoc>
	</target>
</project>


Build.properties文件内容如下:

# 设置到您的Flex SDK的所在路径
FLEX_HOME=D:/Program Files/Adobe/Adobe Flash Builder 4.7 (64 Bit)/sdks/4.6.0
 
# 定位到您的项目源码的位置
# {$basedir} 是Ant默认支持的变量
SOURCE_DIR =${basedir}/src
 
# 定位到您的Lib路径,如果存在的话
#LIBS_DIR =${basedir}/libs
 
# 设定SWF的输出位置
OUTPUT_DIR = ${basedir}/outasdoc

# 是人都知道SDK版本
SDK_VERSION = 4.6.0.23201
LOCALE = zh_CN


然后选中build.xml右键  -- 调试 – Ant构建就OK了



Lib SWC AsDoc 提示

发现SWC拷贝到AIR里面,AsDoc不提示,解决办法:

第一步:在生成AsDoc的时候,加上-keep-xml参数。

第二步:src目录下,新建一个包叫asdocs(名字随便),然后拷贝tempdita下的 packages.dita和自己组件对应的xml文件到asdocs目录下。


第三步:项目右键 – 属性 – Flex库构建路径—资源,勾选asdocs文件夹,重新编译swc就支持AsDoc了



CSDN 不能上传附件,挺烦的。

AsDocLib的源码: http://download.csdn.net/detail/ganxunzou/8172865

猜你喜欢

转载自blog.csdn.net/ganxunzou/article/details/41251137