ANE中 extension.xml 详解
<extension xmlns="http://ns.adobe.com/air/extension/3.1">
<blockquote><id>com.airmyth.extension</id>
<id>com.airmyth.extension</id>
这个就是本机拓展ID
使用时:(例子中的 EXTENSION_ID)
public static const EXTENSION_ID:String = "com.airmyth.extension";//与extension.xml中的id标签一致
private const contextType:String = "capabilities";
private static var extContext:ExtensionContext = null;
private static var _instance:AirCapabilities = null;
public function AirCapabilities()
{
extContext = ExtensionContext.createExtensionContext(EXTENSION_ID, contextType);
}
顺便说一下contextType以Android平台为例:
即为 JAVA 中 createContext函数 接受的参数 (String arg0)
package com.airmyth.extension;
import java.util.HashMap;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREExtension;
import com.airmyth.extension.capabilities.ExtensionContext;
/**
* Extension这个类是AS与JAVA交互的最基础的入口
* @author airmyth
*
*/
public class Extension implements FREExtension {
private HashMap<String, FREContext> contextMap = new HashMap<String, FREContext>();
@Override
public FREContext createContext(String arg0) {
// TODO Auto-generated method stub
if(contextMap.containsKey(arg0))
return contextMap.get(arg0);
else
return getContext(arg0);
}
private FREContext getContext(String arg0) {
FREContext con = null;
if("capabilities".equals(arg0))
{
con = new ExtensionContext();
}
if(con != null)
contextMap.put(arg0, con);
return con;
}
@Override
public void dispose() {
// 销毁资源的方法
}
@Override
public void initialize() {
// 初始化方法
}
}
<nativeLibrary>airmyth.jar</nativeLibrary>jar包名称(相对路径)<initializer>com.airmyth.extension.Extension</initializer>执行的入口,一般为Extension类全名<finalizer>com.airmyth.extension.Extension</finalizer>终止执行 一般为Extension类全名 extension里面包含一个xml文件(描述性文件),用于extension里面的各种属性。当你开发你自己的extension时,你需要自行创建一个xml文件。下面是xml中需要写入的内容介绍:
A、以namespace说明开头
<extension xmlns="http://ns.adobe.com/air/extension/2.5">
B、接着是extension的ID和版本号 <id>com.example.SampleExtension</id> <versionNumber>1.0.4</versionNumber> C、还有几个可供选择的标签(对识别extension很有用)[可省] <name>Sample Extension</name> <description> <text lang="en-US">This is a description.</text> <text lang="fr-FR">C'est une description.</text> </description> <copyright>Copyright 2011, Sample Inc.</copyright>(描述不需要被本地化(localized),但如果需要,name和copyright可以被本地化)[何谓本地化???] D、紧接着是列出此extension所支持的平台和各个平台的相关重要信息 一个平台的application-bundled实现声明:相应的库的名称、加上一个初始化函数。(这个稍后再详细介绍),下面先看一个例子: <platforms> <platform name="Windows-x86"> <applicationDeployment> <nativeLibrary>sample.dll</nativeLibrary> <initializer>InitSample</initializer> </applicationDeployment> </platform> 对于device-bundled实现的声明就相对简单一点,因为设备已经识别到相关的库和方法: <platform name="Sample-ARM"> <deviceDeployment/> </platform> E、最后,extension可以包含一个“默认”平台的实现。实现必须使用ActionScript,因为实际的平台是不知道。它必须面向app部署(因为该app的使用平台还不知道),因为有没有办法保证所有设备都能够绑定默认。它的代表在这样的描述: <platform name="default"> <applicationDeployment/> </platform> </platforms></extension>
而在此实例中的extension.xml如下: <extension xmlns="http://ns.adobe.com/air/extension/2.5"> <id>be.ljf.MyExtension</id> <versionNumber>1.0.0</versionNumber> <platforms> <platform name="Windows-x86"> <!--平台名称--> <applicationDeployment> <nativeLibrary>MyExtension.dll</nativeLibrary> <!--填入相应的.dll文件名--> <initializer>MyExtInitializer</initializer> <!--dll中Ext初始化函数名--> <finalizer>MyExtFinalizer</finalizer> <!--dll中Ext终止函数名--> </applicationDeployment> </platform> </platforms></extension>
http://blog.sina.com.cn/s/blog_6471e1bb01012coo.html
页:
[1]