首页 > 代码库 > Flash Air 打包安卓 ane

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 @Override15 public void dispose() {16 // 这个销毁资源的方法,暂时没有什么用,空着17 18 }19 20 @Override21 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 文件。

 

Flash Air 打包安卓 ane