首页 > 代码库 > 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