zoukankan      html  css  js  c++  java
  • ANE打包

    哈哈,曾经梦寐以求的ANE终于弄成功了一个。说实话,学java和Android就是为了写ANE!好啦,今天把我体会到的记录一下:

    网上其实打包ANE的教程好多,我也找了好多好多。但是好多我自己试了还是没有弄成功,可能是我智商有问题。

    我使用的工具:

    Eclipse-ADT

    flashBuilder

    flash cs6

    flex中创建项目:

    As源码:

    package randy.util.log
    {
        import flash.external.ExtensionContext;
        
        public class LogUtil
        {
                private static var _extensionContext:ExtensionContext=null;
                private static const EXTENSION_ID:String="randyUtilLog";
                private static const LOG_FUNCTION:String="fn_log";
                
                public static const DEBUG:String="debug";
                public static const VERBOSE:String="verbose";
                public static const INFO:String="info";
                public static const WARN:String="warn";
                public static const ERROR:String="error";
                
                public static function log(msg:String,level:String=LogUtil.INFO,tag:String="非若"):void
                {
                    if(!_extensionContext)
                    {
                        _extensionContext=ExtensionContext.createExtensionContext(EXTENSION_ID,null);
                    }
                    _extensionContext.call(LOG_FUNCTION,msg,level,tag);
                }
            }
    }

    拿出我们需要的swc文件ANE_log.swc !

    然后在Eclipse-ADT中创建android项目:

     

    然后给项目添加 FlashRuntimeExtensions.jar

    Jar文件在flashBuilder安装文件下sdks/4.6.0/lib/android目录下面;我的是D盘,4.6.0版本;

     

    可以直接ctrl+C、ctrl+V到android项目文件里面的lib文件夹路径就OK啦

     

    然后就开始java类编辑:

     

    Java源码:

    package randy.util.log;
    
     
    
     
    
    import java.util.Map;
    
    import java.util.HashMap;
    
     
    
    import com.adobe.fre.FREContext;
    
    import com.adobe.fre.FREFunction;
    
     
    
    public class LogContext extends FREContext {
    
        private static Map<String,FREFunction> functions=null;
    
             @Override
    
             public void dispose() {
    
                       // TODO Auto-generated method stub
    
     
    
             }
    
             @Override
    
             public Map<String, FREFunction> getFunctions() {
    
                       if(functions==null){
    
                                functions=new HashMap<String,FREFunction>();
    
                                functions.put(LogFunction.FUNCTION_KEY, new LogFunction());
    
                       }
    
                       return functions;
    
             }
    
     
    
    }

    /*****************************************************************************/

    package randy.util.log;
    
     
    
    import com.adobe.fre.FREContext;
    
    import com.adobe.fre.FREExtension;
    
     
    
    public class LogExtension implements FREExtension {
    
        private LogContext logExtension=null;
    
             @Override
    
             public FREContext createContext(String arg0) {
    
                       if(logExtension==null){
    
                                logExtension=new LogContext();
    
                       }
    
                       return logExtension;
    
             }
    
     
    
             @Override
    
             public void dispose() {
    
                       // TODO Auto-generated method stub
    
     
    
             }
    
     
    
             @Override
    
             public void initialize() {
    
                       // TODO Auto-generated method stub
    
     
    
             }
    
     
    
    }

    /************************************************************************/

    package randy.util.log;
    
     
    
    import android.util.Log;
    
     
    
    import com.adobe.fre.FREContext;
    
    import com.adobe.fre.FREFunction;
    
    import com.adobe.fre.FREObject;
    
     
    
    public class LogFunction implements FREFunction {
    
        public static final String FUNCTION_KEY="fn_log";
    
             @Override
    
             public FREObject call(FREContext arg0, FREObject[] arg1) {
    
                       try{
    
                                String msg=arg1[0].getAsString();
    
                                String level=arg1[1].getAsString();
    
                                String tag=arg1[2].getAsString();
    
                               
    
                                if("debug".equals(level)){
    
                                         Log.d(tag, msg);
    
                                }else if("verbose".equals(level)){
    
                                         Log.v(tag, msg);
    
                                }else if("info".equals(level)){
    
                                         Log.i(tag, msg);
    
                                }else if("warn".equals(level)){
    
                                         Log.w(tag, msg);
    
                                }else if("error".equals(level)){
    
                                         Log.e(tag, msg);}
    
                                }catch(Exception e){}
    
                       return null;
    
             }
    
     
    
    }

    到此,就OK了第二步!

     

    然后点击java文件包右击到处我们要用到的jar文件:

     

     

    点击finish完成!

    然后让我们来创建数字证书:

    打开flashcs6:

    创建一个AIR for Android项目

     

     

    然后点击确定,证书就创建好在桌面了

    然后新建一个文件夹在桌面,比如log

     

    Adt.jar在flashbuilder安装目录lib下可以复制粘贴过来

     

    然后复制swc文件,并将扩展名改为zip,双击进去

    把里面的文件解压出来

    然后就差一个描述文件咯

    新建记事本

     

    输入:

    <extension xmlns="http://ns.adobe.com/air/extension/3.1">
    
      <id>randyUtilLog</id>
    
      <versionNumber>1</versionNumber>
    
      <platforms>
    
        <platform name="Android-ARM">
    
          <applicationDeployment>
    
            <nativeLibrary>aneLog.jar</nativeLibrary>
    
            <initializer>randy.util.log.LogExtension</initializer>
    
            <finalizer>randy.util.log.LogExtension</finalizer>
    
          </applicationDeployment>
    
        </platform>
    
      </platforms>
    
    </extension>

    Txt改为xml

    就像这样

     

    然后桌面键+R,输入cmd,确定:

     

    进入adt.jar所在文件路径:

    Cd  C:UsersfeiruoDesktoplog
    

     

    然后输入打包命令行:

    java -jar adt.jar -package -tsa none -storetype pkcs12 -keystore feiruo.p12 -storepass 123456 -target ane ExtensionLog.ane extension.xml -swc ANE_log.swc -platform Android-ARM library.swf aneLog.jar
    

    -keystore feiruo.p12:数字证书的名字

    -storepass 123456:数字证书密码

    -target ane ExtensionLog.ane:要打包ANE的名字

    extension.xml:描述文件

    -swc ANE_log.swc:swc库文件

    然后log文件夹下会生成一个ExtensionLog.ane文件

     

  • 相关阅读:
    C语言文件操作
    scrapy 提取XML文档
    汇编指令和寄存器
    C语言知识点
    sqlalchemy 的sqlite多线程设置
    Unity 打AssetBundle和加载方案
    unity 4种实现动态障碍方法
    入心诗词记
    人间问答
    生活中有哪些实用的心理学知识?
  • 原文地址:https://www.cnblogs.com/feiruo/p/4732853.html
Copyright © 2011-2022 走看看