工具:

     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 文件。