zoukankan      html  css  js  c++  java
  • Flash Air 打包安卓 ane

    工具:

         1.flash builder

         2.adt打包工具

         3.数字证书

        

    一. 创建 jar 文件

         1. 打开flash builder, 新建一个java 项目。

         2.点击项目属性,选择Java构建路径,选择库,然后添加外部JAR,选择路径,添加FlashRuntimeExtension.jar

      

    3.在项目src文件下建一个包,包名自定,然后在这个包下建3个java类。

    各java代码如下:

    Extension.java类:

     1 package com.three;
     2 import com.adobe.fre.*;
     3 
     4 //Extension这个类是AS与JAVA交互的最基础的入口
     5 public class Extension implements FREExtension {
     6 
     7 
     8 @Override
     9 public FREContext createContext(String arg0) {
    10 // new一个新的threeExtensionContext出来;
    11 return new threeExtensionContext();
    12 }
    13 
    14 @Override
    15 public void dispose() {
    16 // 这个销毁资源的方法,暂时没有什么用,空着
    17 
    18 }
    19 
    20 @Override
    21 public void initialize() {
    22 // 初始化方法,暂时用不着,空着先
    23 
    24 }
    25 
    26 }

    test.java类:

     1 package com.three;
     2 
     3 import com.adobe.fre.FREContext;
     4 import com.adobe.fre.FREFunction;
     5 import com.adobe.fre.FREInvalidObjectException;
     6 import com.adobe.fre.FREObject;
     7 import com.adobe.fre.FRETypeMismatchException;
     8 import com.adobe.fre.FREWrongThreadException;
     9 
    10 public class test implements FREFunction {
    11     
    12     @Override

    //这个类作用就是 AS调用CALL方法给java传一个FREObject的参数组,然后,java给as返回一个FREObject
    13     public FREObject call(FREContext arg0,FREObject[] arg1)
    14     {
    15          int a=0;
    16          FREObject b = null;
    17          try{
    18              a=arg1[0].getAsInt();
    19              
    20          }catch(IllegalStateException e)
    21          {
    22              e.printStackTrace();
    23              
    24          }catch(FRETypeMismatchException e)
    25          {
    26              e.printStackTrace();
    27          }catch(FREInvalidObjectException e)
    28          {
    29              e.printStackTrace();
    30          }catch(FREWrongThreadException e)
    31          {
    32              
    33              e.printStackTrace();
    34          }
    35          
    36          try{
    37              b=FREObject.newObject(a*100);//调用FREObject的静态方法把a这个整型变量写到b里去;
    38              
    39          }catch(FREWrongThreadException e)
    40          {
    41              e.printStackTrace();
    42          }
    43          
    44          return b;
    45         
    46     }
    47 
    48 }

    threeExtensionContext.java:

    package com.three;
    import java.util.*;
    
    import com.adobe.fre.FREContext;
    import com.adobe.fre.FREFunction;
    
    public class threeExtensionContext extends FREContext{
        
        public threeExtensionContext(){
            
            
        }
        
        @Override
        public void dispose(){
            
            
        }
    
        @Override

           // 下面这个比较关键,它的作用是定义as与JAVA具体方法通信的重要接口

    public Map<String,FREFunction> getFunctions(){
            
            Map<String,FREFunction> functionMap = new HashMap<String,FREFunction>();
            
            functionMap.put("test", new test());
            return functionMap;
        }
    }

    如果没有报错的话,右键->导出java-jar文件。

    二.创建SWC文件

       1.用flash builder新建一个flex库项目(flex library)。

        注意:包括Adobe AIR库这个选项一定要选。

      另外:附加的编译器参数要添加 -swf-version-13

      

    再添加ActionScript类,代码如下:

     1 package com.three
     2 {
     3     import flash.external.ExtensionContext;
     4     
     5     public class callJava
     6     {
     7         var context:ExtensionContext;
     8         public function callJava()
     9         {
    10             context=ExtensionContext.createExtensionContext("com.three.Extension","");
    11         }
    12         
    13         public function callJavaTest(value:int):int{
    14         
    15             var a:int;
    16             a=context.call("test",value) as int;
    17             return a;
    18         
    19         }
    20     }
    21 }

    项目结构如图:

    右键点击myExtension.swc,把它复制出来,和刚才那个jar文件放在一起。然后复制一个myExtension.swc的副本,并把它的后缀改为.zip,然后把它解压到当前目录中。

    三.建立extension.xml文件

     1 <extension xmlns="http://ns.adobe.com/air/extension/2.5">
     2 <id>com.three.Extension</id>
     3 <versionNumber>1</versionNumber>
     4 <platforms>
     5 <platform name="Android-ARM">
     6 <applicationDeployment>
     7 <nativeLibrary>TestAirJava01.jar</nativeLibrary>
     8 <initializer>com.three.Extension</initializer>
     9 <finalizer>com.three.Extension</finalizer>
    10 </applicationDeployment>
    11 </platform>
    12 </platforms>
    13 </extension>

    四. 签证文件(p12)

    可以用flash builder建一个。

    五.打包

    上述文件放到同一个文件夹中,命令行中输入 cd 文件夹路径

    然后, 

    java -jar adt.jar -package -tsa none -storetype pkcs12 -keystore grq186key.p12 -storepass 125521 -target ane m.ane extension.xml -swc myExtensionAs.swc -platform Android-ARM library.swf TestAirJava01.jar

     即可生成m.ane 文件。

  • 相关阅读:
    python 修改excel
    python 正则表达式规则收集
    anusplina 4.36版本使用提示 说明
    python 汉字编码问题
    python IOError: [Errno 22] invalid mode ('r') or filename:
    将矩阵数据转换为栅格图 filled.contour()
    将数值矩阵映射为栅格图
    一脚踩进java之基础篇23——常用API(Object、String)
    一脚踩进java之基础篇22——面向对象 (不同修饰符使用细节)
    一脚踩进java之基础篇21——面向对象 (访问修饰符、代码块)
  • 原文地址:https://www.cnblogs.com/grq186/p/4126738.html
Copyright © 2011-2022 走看看