1、AIR ANE教程AIR ANE详细教程以下教程是用在android手机上的首先,在这个教程里要准备的工具:1、flash cs62、flash builder 4.6 (低版本的没用过,介意大家还是用我提供的这个版本);3、adt打包工具(论坛回复本帖就能下载);4、数字证书(就是用来签证的玩意,可以向adobe申请,也可以自己用flash cs6创建);一、创建jar文件.jar就是个java文件,android系统原生就是java来写的,所以我们想扩展android 上的air,就得有个jar文件来实现你要的功能。1、先打开FB(就是flash builder,以后都叫它FB了)。建一个
2、java项目。(文件-新建-其它-java项目|file-new -other-java-java project)。然后,随便起个名字,最后点击完成就行啦。然后,看看项目目录,应该就是这个:然后,对着项目点右键(就是对着myExtensonJava点右键),点击属性,再选java构建路径,然后选库路径、再选添加外部jar,再找到flash cs6目录下AIR3.2libandroid 的FlashRuntimeExtensions.jar文件(propertiesjava built pathlibraryAdd External JARs XXX目录下的FlashRuntimeExtens
3、ions.jar打开OK)如图:然后,在项目的src文件下建一个包,包名自定,我这用的是com.three,接着再在这个包下建3个java类。先看看项目结构各JAVA代码如下:1、Extension的代码1. package com.three;2. import com.adobe.fre.*;3. 4. /Extension这个类是AS与JAVA交互的最基础的入口,其实很简单,也就这么点东西5. public class Extension implements FREExtension 6. 7. 8. Override9. public FREContext createContext
4、(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. 复制代码2、threeExtensionContext的代码:1. package com.th
5、ree;2. 3. import java.util.*;4. 5. import com.adobe.fre.FREContext;6. import com.adobe.fre.FREFunction;7. 8. public class threeExtensionContext extends FREContext 9. 10. public threeExtensionContext()11. /这个貌似也用不着,空着12. 13. 14. Override15. public void dispose() 16. / 空着17. 18. 19. 20. Override21. pu
6、blic Map getFunctions() 22. / 下面这个比较关键,它的作用是定义as与JAVA具体方法通信的重要接口23. Map functionMap=new HashMap();24. functionMap.put(test,new test();25. return functionMap;26. 27. 28. 复制代码3,test的代码:1. package com.three;2. 3. import com.adobe.fre.FREContext;4. import com.adobe.fre.FREFunction;5. import com.adobe.fr
7、e.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. Override13. /这个类作用就是 AS调用CALL方法给java传一个FREObject的参数组,然后,java给as返回一个FREObject14. publi
8、c FREObject call(FREContext arg0, FREObject arg1) 15. / 定义方法的具体内容16. int a=0; /声明一个整形变量a17. 18. FREObject b = null; /声明一个FREObject对象b,待会返回用的;19. try 20. a=arg10.getAsInt();/读取as传过来的整理参数并赋值给a;21. catch (IllegalStateException e) 22. /不知道是啥 ,FB自己添加的23. e.printStackTrace();24. catch (FRETypeMismatchExce
9、ption e) 25. /不知道是啥 ,FB自己添加的26. e.printStackTrace();27. catch (FREInvalidObjectException e) 28. /不知道是啥 ,FB自己添加的29. e.printStackTrace();30. catch (FREWrongThreadException e) 31. /不知道是啥 ,FB自己添加的32. e.printStackTrace();33. 34. 35. 36. 37. try 38. b=FREObject.newObject(a*100);/调用FREObject的静态方法把a这个整型变量写到
10、b里去;39. catch (FREWrongThreadException e) 40. / /不知道是啥 ,FB自己添加的41. e.printStackTrace();42. 43. 44. /45. return b;/再返回b;46. 47. 48. 复制代码最后,写完了,没有报错的话,就右键项目,点导出-java-jar文件。二、创建SWC文件还是用FB,这次来创建swc库。至于什么是swc,自己去谷哥XX一下吧。1、用FB,新建一个flex库项目(flex library)。就是文件-新建-flex库项目。如果找不着,就 文件-新建-其它-flash builder -flex库
11、项目。2、写代码:1. package com.three2. 3. import flash.external.ExtensionContext;4. public class callJava5. 6. var context:ExtensionContext;7. public function callJava()8. 9. 10. context=ExtensionContext.createExtensionContext(com.three.Extension,);11. 12. 13. public function callJavaTest(value:int):int14.
12、 var a:int;15. a=context.call(test,value) as int;16. return a;17. 18. 19. 20. 复制代码OK,看看项目结构:看到myExtension.swc之后右键点击它,然后复制出来,跟刚才那个jar文件放在一起。然后,复制一个myExtension.swc的副本,把它改成myExtension.zip,并解压到当前目录;三、extension.XML 文件extention.XML文件,上面定义了ane运行环境配置等乱七八遭的东西;1、新建 一个文本文件,打开,粘入以下代码1. extension xmlns=2. com.th
13、ree.Extension3. 14. 5. 6. 7. myExtensionJava.jar8. com.three.Extension9. com.three.Extension10. 11. 12. 13. 复制代码然后把这个文本文件改成extension.xml就行了,同样,把它跟jar 和swc放在一起。四、签证 文件(P12)这个数字签证文件,要申请正式的挺麻烦的(还得花钱,并提供公司相关信息。)不过还好用flash可以自己创建开发版的。以下就是自己创建签证文件的过程;1、打开flash,新建一个air项目(air for desktop 或是air forandroid 还是
14、air for ios 都可以);2、文件AIR 3.2 for XXX配置签名创建。然后自己慢慢填吧,填好了保存出来,跟刚才创建的那一堆东西放在一起。五、ADT打包注:此ADT可不是android的那个ADT。 这个ADT只是一个打包工具,文件是 adt.jar 。要使用它,你的电脑上还得安装java运行环境。这里就不写了,去谷哥XX一下,有很多教程。这工具回复贴子有下载,下载完后同样把它放到刚才那个文件目录下,现在目录应该是这样子:然后,在这个文件夹下按着shift键点鼠标右键,在弹出的菜单里选 : 在此处打开命令窗口 。然后就开始输入指令吧。这玩意是命令行工具,我就直接把命令粘下来了ja
15、va -jar adt.jar -package -tsa none -storetype pkcs12 -keystore a.p12 -storepass 123 -target ane m.ane extension.xml-swc myExtensionAs.swc -platform Android-ARM library.swf myExtensionJava.jar这些命令使用起来其实挺简单的,不过有几个地方要注意。一个-tsa none,这个在很多教程里都没有写这句,也许你们那不知道,会报一个时间戳的错。因为如果不写,adt打包会连接一个国外的网站获得时间戳,但人家那国外网站不
16、让我们国内人民访问,所以报错。解决方法就是让它别写时间戳,也就是加 -tsa none。要么用fanqiang软件也行。这两者随便选择那个;我现在是生成了一个叫m.ane的文件了,不知道你们是不是按照我提供的教程一步一步的做的。如果是的话,就下面可以进入代码测试啦。现在可以写代码来测试了:1、用flash cs6 新建一个air for android项目;2、打开文件actionScript设置库路径点击(浏览到本机扩展(ANE)文件)找到我们生成的那个ANE文件点确定。3、在flash面板上,点击 窗口,然后 组件。打开组件面板,拖两个textArea和一个button 到舞台上。 这两个
17、textArea分别命名为txt1和txt2 button命名为 btn如图:4、按F9键打开动作面板 ,输入代码:1. import com.three.callJava;2. import flash.events.MouseEvent;3. var con:callJava=new callJava();4. btn.addEventListener(MouseEvent.CLICK,onClick);5. function onClick(e)6. var cj:callJava=new callJava();7. var a:int=int(txt1.text);8. var b:i
18、nt=cj.callJavaTest(a);9. txt2.text=b.toString();10. 复制代码想要看效果,在Windows下是不行的,必须要连上android手机,然后在AIR 3.2 for android 设置里 部署面板上选上 发布以后在连接的android设置运行程序。当然,签名证书也要填上的哟。另外一点是 ,手机上要安装air。如果手机不想装air,也可以,同样,在布署面板里勾选将air运行时嵌入应用程序。然后点发布就可以测试效果了。如果发布的时候提示版本错误,那就回到 flex库项目那,把那个myExtensinAs项目的flex库编辑器的 附加的编译器参数里 加上 -swf-version=11。最终运行结果呢,因为是在手机上,不好截图,就不展示了.大概的样子就是,屏幕上有两个文本框,在上面那个文本框里输入一个整数,然后点击按钮,下面那个文本框就会输出上面那个文本框的10倍的整数。虽然这功能相当简单,而且,根本用不着这么复杂的方法。不过,我这只是一个抛砖引玉的作用,到底ANE能干嘛,还靠大家一起发掘与探索。最后我把要用到的东西打一下包,顺便工程也打一下吧 QQ:2462611616
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1