守望者--AIR技术交流

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: ANE FlasCC 炼金术
查看: 865|回复: 1

[打包发布] ANE中 extension.xml 详解

[复制链接]
  • TA的每日心情
    擦汗
    2018-4-10 15:18
  • 签到天数: 447 天

    [LV.9]以坛为家II

    1742

    主题

    2094

    帖子

    13万

    积分

    超级版主

    Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

    威望
    562
    贡献
    29
    金币
    51691
    钢镚
    1422

    开源英雄守望者

    发表于 2015-8-6 13:25:53 | 显示全部楼层 |阅读模式

    1. <extension xmlns="http://ns.adobe.com/air/extension/3.1">

    2. <blockquote><id>com.airmyth.extension</id>
    复制代码


    <id>com.airmyth.extension</id>
    这个就是本机拓展ID




    使用时:(例子中的 EXTENSION_ID
    1. public static const EXTENSION_ID:String = "com.airmyth.extension";//与extension.xml中的id标签一致  
    2.                
    3.                 private const contextType:String = "capabilities";
    4.                
    5.                 private static var extContext:ExtensionContext = null;
    6.                
    7.                 private static var _instance:AirCapabilities = null;
    8.                
    9.                 public function AirCapabilities()
    10.                 {
    11.                         extContext = ExtensionContext.createExtensionContext(EXTENSION_ID, contextType);
    12.                 }
    复制代码


    顺便说一下  contextType  以Android平台为例:


    即为 JAVA 中 createContext  函数 接受的参数 (String arg0


    1. package com.airmyth.extension;

    2. import java.util.HashMap;

    3. import com.adobe.fre.FREContext;
    4. import com.adobe.fre.FREExtension;
    5. import com.airmyth.extension.capabilities.ExtensionContext;

    6. /**
    7. * Extension这个类是AS与JAVA交互的最基础的入口
    8. * @author airmyth
    9. *
    10. */
    11. public class Extension implements FREExtension {

    12.         private HashMap<String, FREContext> contextMap = new HashMap<String, FREContext>();
    13.         @Override
    14.         public FREContext createContext(String arg0) {
    15.                 // TODO Auto-generated method stub
    16.                 if(contextMap.containsKey(arg0))
    17.                         return contextMap.get(arg0);
    18.                 else
    19.                         return getContext(arg0);
    20.         }

    21.         private FREContext getContext(String arg0) {
    22.                 FREContext con = null;
    23.                 if("capabilities".equals(arg0))
    24.                 {
    25.                         con = new ExtensionContext();
    26.                 }
    27.                 if(con != null)
    28.                         contextMap.put(arg0, con);
    29.                
    30.                 return con;
    31.         }
    32.         
    33.         @Override
    34.         public void dispose() {
    35.                 // 销毁资源的方法

    36.         }

    37.         @Override
    38.         public void initialize() {
    39.                 // 初始化方法

    40.         }

    41. }
    复制代码



    <nativeLibrary>airmyth.jar</nativeLibrary>
    jar  包名称(相对路径)
    <initializer>com.airmyth.extension.Extension</initializer>
    执行的入口,一般为Extension  类全名
    <finalizer>com.airmyth.extension.Extension</finalizer>
    终止执行 一般为Extension  类全名

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2018-4-10 15:18
  • 签到天数: 447 天

    [LV.9]以坛为家II

    1742

    主题

    2094

    帖子

    13万

    积分

    超级版主

    Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

    威望
    562
    贡献
    29
    金币
    51691
    钢镚
    1422

    开源英雄守望者

     楼主| 发表于 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>



    守望者AIR技术交流社区(www.airmyth.com)
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    
    关闭

    站长推荐上一条 /4 下一条

    QQ|手机版|Archiver|网站地图|小黑屋|守望者 ( 京ICP备14061876号

    GMT+8, 2019-8-19 01:39 , Processed in 0.040245 second(s), 33 queries .

    守望者AIR

    守望者AIR技术交流社区

    本站成立于 2014年12月31日

    快速回复 返回顶部 返回列表