破晓 发表于 2015-8-6 13:25:53

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类全名

破晓 发表于 2015-8-6 13:27:37

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]
查看完整版本: ANE中 extension.xml 详解