Flex ANE制作打包流程
2017-03-02 23:28
357 查看
目前从事Flex4+Java桌面应用开发,项目中应用很多ane文件,想了解ane文件原理及制作打包过程。
本篇博客记录自己制作Flex AIR ane步骤,遇到的问题及解决方案。原理,底层细节等本篇就不介绍了,可参考本文末尾的参考资料。
ane可以运行在三个平台中:
ane+ios,ane+Android(java)(jar),ane+Windows(c++/c#)(dll) 。
在Windows平台通过AIR调用jar生成ane,会一直报错找不到制定方法。。。(才发现这种方式行不通,哭晕在厕所)
文章末尾提供了本文测试所用的jar,swc,打包命令等资料。
下面介绍制作打包ane的步骤
2、Myeclipse或eclipse
3、Adt.jar
4、数字签名证书(可以在FB4.6中随意建一个air项目,然后到处发行版,创建一个)
5、解压缩软件
6、JDK/JRE
1、创建一个TestExtension类,实现FREExtension接口,该类是AS与Java交互的最基础的入口。
2、创建一个Context类,继承FREContext类,覆写getFunctions方法,这个方法是定义AS与Java具体方法通讯的接口。
3、创建一个Function类,实现FREFunction接口,实现call方法。
导出AneTestJava.jar
这里注意jdk的 版本。按照网上搜索到的信息,最好jdk版本控制在1.6。本篇文章测试时使用的是jdk1.6.0_43。
![](http://img.blog.csdn.net/20170302230700801?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFjX2tvYmU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2、创建一个as类
注意这个类中的createExtensionContext方法的第一个参数和call方法的第一个参数。
*createExtensionContext方法的第一个参数com.agree.ane.TestExtension需要与第四步中创建的extension.xml中的id一致。
*call方法的第一个参数testFunction需要与上面jar中TestContext类的getFunctions方法中map的key对应,如果有多个,则需要定义多个TestFunction类,每个类中实现自己的实际业务。
3、构建库项目,生成AneTestAS.swc文件。
1、注意这里的命名空间http://ns.adobe.com/air/extension/3.1,版本一定要与adl.exe版本一致。
可以在FB4.6安装目录下查看adl版本。
![](http://img.blog.csdn.net/20170302230720076?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFjX2tvYmU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2、id标签必须与AneTestAS库项目中CallJava类中createExtensionContext的第一个参数一致。
3、Platform标签的name属性必须为Android-ARM,完全匹配。若是桌面应用必须为Windows-x86,也必须是完全匹配。
4、nativeLibrary标签的值为第一步中导出的jar包。
5、Initializer/finalizer的值为第一步中导出的jar包中TestExtension类的完全包名,允许没有finalizer标签。
2、在FB4.6安装目录sdks\4.6.0\lib下拿到adt.jar
3、将AneTestJava.jar,AneTestAS.swc,catalog.xml,library.swf,extension.xml,adt.jar复制到某一个文件夹下,并在该文件夹中按住shift键+点击鼠标右键,选择“在此处打开命名窗口”或者cmd命令进入该文件夹所在目录中
4、在打开的cmd窗口中输入。其实这里可以采用ant的build.xml进行构建打包,博主还在学习中,后面可以更新上来。
(1)-tsa none 可以避免时间戳和去Adobe官网认证之类的(这点可能说的不对),希望知道的大神告诉下
(2)-keystore aa.p12 aa.p12采用aa.p12数字签名证书
(3)-storepass 123456 指定数字签名证书的密码
(4)-target ane m.ane 指定要制作的ane的文件名
(5)-platform Android-ARM 这里的platform值必须与extension.xml中platform标签的name属性一致。
这里还有-C的参数可以使用,可惜不会使用,学习中。
通过该cmd命令即可在当前目录得到m.ane文件。
2、右击项目,选择属性,在属性面板中选择Flex构建路径条目,选择本机扩展页签,添加ANE。属性面板中选择Flex构建打包条目下的Google Android条目,选择本机扩展页签,在已显示的m.ane行,勾选包,点击确定保存设置。
3、在Flex手机项目中使用该ane。
必须要注意ane不支持模拟器,必须在真实设备上进行调试。若是使用模拟器则会报错“Requested extension com.adobe.Vibration is not supported for Windows-x86 ”
制作打包例子下载包括jar,swc,打包命令及制作流程
“Registry key ‘Software/JavaSoft/Java Runtime Environment/CurrentVersion’
has value ‘1.8’, but ‘1.7’ is required.
Error: could not find java.dll
Error: could not find Java 2 Runtime Environment.”
请检查jdk版本,可能是之前电脑安装了多个jdk版本导致注册表出问题。
解决办法:
通过cmd窗口regedit命令快速打开注册表,找到这个路径:
HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment,修改CurrentVersion对应的值为1.7,重新运行手机项目即可。
![](http://img.blog.csdn.net/20170302230912813?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFjX2tvYmU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
https://forums.adobe.com/message/4717194 模拟器报错问题
http://blog.csdn.net/linxcool/article/details/7770179 ane原理
http://blog.sina.com.cn/s/blog_5d323f950101d6rc.html ane原理
http://blog.sina.com.cn/s/blog_5d323f950101d4a4.html ane制作,大家可以参考
本篇博客记录自己制作Flex AIR ane步骤,遇到的问题及解决方案。原理,底层细节等本篇就不介绍了,可参考本文末尾的参考资料。
ane可以运行在三个平台中:
ane+ios,ane+Android(java)(jar),ane+Windows(c++/c#)(dll) 。
在Windows平台通过AIR调用jar生成ane,会一直报错找不到制定方法。。。(才发现这种方式行不通,哭晕在厕所)
文章末尾提供了本文测试所用的jar,swc,打包命令等资料。
下面介绍制作打包ane的步骤
一、准备工作
1、Flash Builder 4.62、Myeclipse或eclipse
3、Adt.jar
4、数字签名证书(可以在FB4.6中随意建一个air项目,然后到处发行版,创建一个)
5、解压缩软件
6、JDK/JRE
二丶创建jar
创建java项目,并导入Flex SDK的lib/Android目录下的FlashRuntimeExtensions.jar1、创建一个TestExtension类,实现FREExtension接口,该类是AS与Java交互的最基础的入口。
package com.agree.ane; import com.adobe.fre.FREContext; import com.adobe.fre.FREExtension; //这个类是AS与JAVA交互的最基础的入口 public class TestExtension implements FREExtension { @Override public FREContext createContext(String arg0) { return new TestContext(); } @Override public void dispose() { // TODO Auto-generated method stub } @Override public void initialize() { // TODO Auto-generated method stub } }
2、创建一个Context类,继承FREContext类,覆写getFunctions方法,这个方法是定义AS与Java具体方法通讯的接口。
package com.agree.ane; import java.util.HashMap; import java.util.Map; import com.adobe.fre.FREContext; import com.adobe.fre.FREFunction; public class TestContext extends FREContext { @Override public void dispose() { // TODO Auto-generated method stub } @Override public Map<String, FREFunction> getFunctions() { // 下面这个比较关键,它的作用是定义as与JAVA具体方法通信的重要接口 Map<String,FREFunction> functionMap=new HashMap<String,FREFunction>(); functionMap.put("testFunction",new TestFunction()); return functionMap; } }
3、创建一个Function类,实现FREFunction接口,实现call方法。
package com.agree.ane; import com.adobe.fre.FREContext; import com.adobe.fre.FREFunction; import com.adobe.fre.FREObject; import com.adobe.fre.FREWrongThreadException; public class TestFunction implements FREFunction { @Override //这个类作用就是 AS调用CALL方法给java传一个FREObject的参数组,然后,java给as返回一个FREObject public FREObject call(FREContext arg0, FREObject[] arg1) { FREObject result=null; try { result=FREObject.newObject("Ane测试"); } catch (FREWrongThreadException e) { e.printStackTrace(); } return result; } }
导出AneTestJava.jar
这里注意jdk的 版本。按照网上搜索到的信息,最好jdk版本控制在1.6。本篇文章测试时使用的是jdk1.6.0_43。
三丶创建Flex库项目swc
1、FB4.6中创建Flex库项目AneTestAS,创建时配置选择注意勾选包括Adobe AIR库2、创建一个as类
package git.ane.test { import flash.external.ExtensionContext; public class CallJava { public var context:ExtensionContext; public function CallJava() { context=ExtensionContext.createExtensionContext("com.agree.ane.TestExtension",null); } public function callJavaTest():String{ trace(JSON.stringify(context)); return context.call("testFunction",null)+""; } } }
注意这个类中的createExtensionContext方法的第一个参数和call方法的第一个参数。
*createExtensionContext方法的第一个参数com.agree.ane.TestExtension需要与第四步中创建的extension.xml中的id一致。
*call方法的第一个参数testFunction需要与上面jar中TestContext类的getFunctions方法中map的key对应,如果有多个,则需要定义多个TestFunction类,每个类中实现自己的实际业务。
3、构建库项目,生成AneTestAS.swc文件。
四、创建extension.xml文件
<extension xmlns="http://ns.adobe.com/air/extension/3.1"> <id>com.agree.ane.TestExtension</id> <versionNumber>1.0.0</versionNumber> <platforms> <platform name="Android-ARM"> <applicationDeployment> <nativeLibrary>AneTestJava.jar</nativeLibrary> <initializer>com.agree.ane.TestExtension</initializer> <finalizer>com.agree.ane.TestExtension</finalizer> </applicationDeployment> </platform> </platforms> </extension>
1、注意这里的命名空间http://ns.adobe.com/air/extension/3.1,版本一定要与adl.exe版本一致。
可以在FB4.6安装目录下查看adl版本。
2、id标签必须与AneTestAS库项目中CallJava类中createExtensionContext的第一个参数一致。
3、Platform标签的name属性必须为Android-ARM,完全匹配。若是桌面应用必须为Windows-x86,也必须是完全匹配。
4、nativeLibrary标签的值为第一步中导出的jar包。
5、Initializer/finalizer的值为第一步中导出的jar包中TestExtension类的完全包名,允许没有finalizer标签。
五丶打包
1、使用压缩软件打开AneTestAS.swc,并解压得到catalog.xml和library.swf两个文件2、在FB4.6安装目录sdks\4.6.0\lib下拿到adt.jar
3、将AneTestJava.jar,AneTestAS.swc,catalog.xml,library.swf,extension.xml,adt.jar复制到某一个文件夹下,并在该文件夹中按住shift键+点击鼠标右键,选择“在此处打开命名窗口”或者cmd命令进入该文件夹所在目录中
4、在打开的cmd窗口中输入。其实这里可以采用ant的build.xml进行构建打包,博主还在学习中,后面可以更新上来。
java -jar adt.jar -package -tsa none -storetype pkcs12 -keystore aa.p12 -storepass 123456 -target ane m.ane extension.xml -swc AneTestAS.swc -platform Android-ARM AneTestJava.jar library.swf
(1)-tsa none 可以避免时间戳和去Adobe官网认证之类的(这点可能说的不对),希望知道的大神告诉下
(2)-keystore aa.p12 aa.p12采用aa.p12数字签名证书
(3)-storepass 123456 指定数字签名证书的密码
(4)-target ane m.ane 指定要制作的ane的文件名
(5)-platform Android-ARM 这里的platform值必须与extension.xml中platform标签的name属性一致。
这里还有-C的参数可以使用,可惜不会使用,学习中。
通过该cmd命令即可在当前目录得到m.ane文件。
六丶使用
1、创建Flex手机项目2、右击项目,选择属性,在属性面板中选择Flex构建路径条目,选择本机扩展页签,添加ANE。属性面板中选择Flex构建打包条目下的Google Android条目,选择本机扩展页签,在已显示的m.ane行,勾选包,点击确定保存设置。
3、在Flex手机项目中使用该ane。
必须要注意ane不支持模拟器,必须在真实设备上进行调试。若是使用模拟器则会报错“Requested extension com.adobe.Vibration is not supported for Windows-x86 ”
制作打包例子下载包括jar,swc,打包命令及制作流程
写在最后
若是运行该手机项目时报错“Registry key ‘Software/JavaSoft/Java Runtime Environment/CurrentVersion’
has value ‘1.8’, but ‘1.7’ is required.
Error: could not find java.dll
Error: could not find Java 2 Runtime Environment.”
请检查jdk版本,可能是之前电脑安装了多个jdk版本导致注册表出问题。
解决办法:
通过cmd窗口regedit命令快速打开注册表,找到这个路径:
HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment,修改CurrentVersion对应的值为1.7,重新运行手机项目即可。
参考资料
http://www.ithao123.cn/content-884869.html JDK错误解决方案https://forums.adobe.com/message/4717194 模拟器报错问题
http://blog.csdn.net/linxcool/article/details/7770179 ane原理
http://blog.sina.com.cn/s/blog_5d323f950101d6rc.html ane原理
http://blog.sina.com.cn/s/blog_5d323f950101d4a4.html ane制作,大家可以参考
相关文章推荐
- Flex皮肤制作流程
- Ant搞定全部开发流程 (包括编译、打包,签名,制作安装文件,生成帮助文档全部搞定)
- 制作IOS ANE的基本流程
- 支付宝小程序申请-制作-打包-上线完整流程汇总
- 使用Xcode打包ANE流程
- Flex皮肤制作流程
- iOS企业ipa(299)证书制作、打包发布全流程
- iOS企业ipa(299)证书制作、打包发布全流程
- 打通Android、IOS、ANE制作流程
- android ota 升级包制作分析 (3 打包流程)
- iOS企业ipa(299)证书制作、打包发布全流程(亲测,成功)
- 制作IOS ANE的基本流程
- Flash Android ANE 打包流程及使用方法
- Flex皮肤制作流程
- Flash Android ANE打包之基本流程
- Flash Android ANE打包之基本流程
- Flex皮肤制作流程
- 文件夹的打包与加密--升级包的制作流程
- iOS企业ipa(299)证书制作、打包发布全流程
- Android Studio 打包发布流程