本地扩展就是需要调用原生的东西要开发的插件

首先打开Android Studio,建个空项目, 再建立个名为 FirstANE 的Android Library Module,

然后把C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.6\sdks\4.6.0\lib\android\FlashRuntimeExtensions.jar

文件复制放到新建模块的libs文件夹下

接着建上3个类,代码如下:

package org.fluidea;import java.util.HashMap;
import java.util.Map;import android.util.Log;import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;public class FirstANEContext extends FREContext
{@Override public void dispose() { Log.i("FirstANEContext", "Dispose context"); } @Override public Map<String, FREFunction> getFunctions() { Log.i("FirstANEContext", "Creating function Map"); Map<String, FREFunction> functionMap = new HashMap<String, FREFunction>(); functionMap.put("sayHello", new SayHelloFunction() ); return functionMap;}
}
package org.fluidea;import android.util.Log;import com.adobe.fre.FREContext;
import com.adobe.fre.FREExtension;public class FirstANEExtension implements FREExtension {private FirstANEContext context;private String tag = "FirstANEExtension";@Overridepublic FREContext createContext(String arg0) {Log.i(tag, "Creating context"); if( context == null) context = new FirstANEContext(); return context; }@Overridepublic void dispose() {Log.i(tag, "dispose");}@Overridepublic void initialize() {Log.i(tag, "initialize");}}
package org.fluidea;import android.util.Log;import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREObject;public class SayHelloFunction implements FREFunction {@Overridepublic FREObject call(FREContext arg0, FREObject[] arg1) {FREObject result = null;Log.i ("SayHelloFunction", "call");try {FREObject msg = arg1[0];String s = msg.getAsString();Log.i("SayHelloFunction", "String from AS: " + s);result = FREObject.newObject("Response from Java:" + s);}catch (Exception e) {Log.i ("SayHelloFunction", e.getMessage());}return result;}}

接着用上一节介绍的gradle打包jar的方法, 打包成 FirstANE.jar 包

然后到 MyEclipse 里面, 新建一个Flex 库项目名为 FirstANE ,建立一个as类, 代码如下

package org.fluidea
{import flash.external.ExtensionContext;public class FirstANE {private var context:ExtensionContext;public function FirstANE() {try{context = ExtensionContext.createExtensionContext("org.fluidea.FirstANE", null);}catch (e:Error){trace("e:" + e);}}public function isSupported():Boolean{return context != null;}public function sayHello(message:String):String{var retval:String;retval = context.call("sayHello", message) as String;return retval;}public function dispose():void{context.dispose();}}}

自动构建或手动构建得到bin目录下的 FirstANE.swc 文件

然后打包, 我假设已经把 C:\Users\Administrator\AppData\Local\Android\sdk\tools加到环境变量了

我们建个文件夹叫pkg, 现在有 FirstANE.jar 和 FirstANE.swc 2个文件,

FirstANE.swc直接放在 pkg 文件夹下,

在 pkg 里面再建个文件夹叫 libs , 把FirstANE.jar放进去, 把 FirstANE.swc 用解压工具把里面的 library.swf 解压出来放到 libs 文件夹下

在 pkg 里再建个 extension.xml 文件

<extension xmlns="http://ns.adobe.com/air/extension/3.1"><id>org.fluidea.FirstANE</id><versionNumber>1</versionNumber><platforms><platform name="Android-ARM"><applicationDeployment><nativeLibrary>FirstANE.jar</nativeLibrary><initializer>org.fluidea.FirstANEExtension</initializer></applicationDeployment></platform></platforms>
</extension>

在 pkg 里再建个 pkg_ane.bat 文件

adt -package -target ane FirstANE.ane extension.xml -swc FirstANE.swc -platform Android-ARM -C libs .pause

注意这是3行 , 然后双击运行就可以在 pkg 里打包出 FirstANE.ane 文件了

继续建立一个 Flex 手机项目(我建立ActionScript 手机项目MyEclipse会卡死), 选支持Google Android的空白项目,

最后一步的本机扩展选择我们的FirstANE.ane文件, OK

再新建一个 ActionScript 类, MyANETest.as, 右键设置为默认应用程序

package
{import flash.display.Sprite;import flash.display.StageAlign;import flash.display.StageScaleMode;import org.fluidea.FirstANE;public class MyANETest extends Sprite{     private var ane:FirstANEpublic function MyANETest(){stage.align = StageAlign.TOP_LEFT;stage.scaleMode = StageScaleMode.NO_SCALE;ane = new FirstANE();// 判断是否可以运行if (ane.isSupported()) {// 调用 sayHello 并输出返回值trace(ane.sayHello("Hi, Android"));}}}
}

然后点调试配置,

然后悲剧的一幕肯定会上演, 后台无输出, 后台无输出, 后台无输出..........................

是不是哪里代码写错了, 没错呀, 我都看了几十次了这文章 : [安卓开发整理]——ANE, 没什么复杂的玩意儿呀

然后开始慢慢比对代码了, 接着看是不是资源文件没打进去导致的, 最后还在MyEclipse新建一个java项目把jar包引用进去, 看 jar 包对不

把想到的可能都试了一遍, 最后下班了去吃饭, 中途就想了, 文件没错, 是不是打的 jar 包有问题, 结果就上网下载了个adt-bundle-windows-x86_64-20140702.zip

新建个 Android Project, 把代码贴进去, File -> Export -> ......., 最后打包ane, 引用到上面的 MyANETest , 终于盼到了控制台的输出 :

完结, 这里是全部源码 .

这里是 pkg 打包命令及资源

或者 https://github.com/svygh123/ANE_Relate.git

开发Flex for Android第一个ANE(ActionScript Native Extensions)本地扩展相关推荐

  1. 利用Adobe AIR本地扩展支持Android开发

    http://bbs.9ria.com/thread-180609-1-1.html 学前准备... 2 所需知识... 2 额外工具... 2 用户等级... 2 例子文件... 2 设置AIR S ...

  2. Android之Adobe AIR本地扩展

    来自:http://bbs.9ria.com/thread-180609-1-1.html 学前准备... 2 所需知识... 2 额外工具... 2 用户等级... 2 例子文件... 2 设置AI ...

  3. android listview下拉动画效果,Android开发中利用ListView实现一个渐变式的下拉刷新动画...

    Android开发中利用ListView实现一个渐变式的下拉刷新动画 发布时间:2020-11-23 16:50:31 来源:亿速云 阅读:80 作者:Leah 本篇文章给大家分享的是有关Androi ...

  4. android动画view上移,在Android开发中使用View制作一个引导动画

    在Android开发中使用View制作一个引导动画 发布时间:2020-11-20 16:46:16 来源:亿速云 阅读:98 作者:Leah 这篇文章将为大家详细讲解有关在Android开发中使用V ...

  5. Android学习笔记---开发与运行(卸载)第一个ANDROID应用--Helloworld

    开发与运行(卸载)第一个ANDROID应用 1.第一个android程序:HelloWorld   新建:android Project   填写project name,选择安卓平台 2.a.app ...

  6. android打地鼠设计报告,android开发中利用handler制作一个打地鼠小游戏

    android开发中利用handler制作一个打地鼠小游戏 发布时间:2020-11-25 15:21:11 来源:亿速云 阅读:136 作者:Leah 这期内容当中小编将会给大家带来有关androi ...

  7. 用jsp开发web应用并不是一个高效率的选择

    1.    Android里有办法让js使用java方法像使用自己的方法一样方便,和flex的很相似,flex里面使用java方法就像使用自己的方法一样. 2.    用Flex开发准确的说就是用as ...

  8. ReactNative开发——RN与android Native交互初探

    ReactNative开发--RN与android Native交互初探 环境 window10,reactnative 0.44版 RN调用android方法 1.导入NativeModules组件 ...

  9. air 开发 android,简介开发运行于Android的AIR程序

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 简介开发运行于Android的AIR程序 最近终于有一些时间来玩玩,透过Flash CS5撰写一些AIR的程序放置到An ...

最新文章

  1. JAVA正则表达式的学习
  2. VMware虚拟设备之虚拟磁盘配置与虚拟磁盘置备类型相关介绍
  3. OTSU算法对图像二值化
  4. 64位虚拟机下asm()语法_一步步学写Windows下的Shellcode
  5. 思科路由器全局、接口、协议调试(下)
  6. vue-cli3 DllPlugin 提取公用库
  7. Centos系统服务FAQ汇总(下)
  8. IntelliJ IDEA lombok插件的安装和使用
  9. python安装opencv库、提示找不到pip_OpenCV Python importorror:DLL加载失败:找不到指定的模块...
  10. Linux top 使用技巧
  11. word里面用mathtype编辑公式转成PDF后出现乱码
  12. Libre-SOC 系统级芯片
  13. Linux文件类型与文件权限详解(二)
  14. 三本学计算机没用吗,腾讯员工:我211学计算机都觉得写代码难,三本的人能写代码为啥考不上211...
  15. 商城商品的知识图谱构建
  16. SEO采集系统-SEO采集工具自动采集伪原创发布
  17. docker 常用命令
  18. 亮瞎眼的十六进制颜色代码表
  19. 微星MSI新笔记本外接耳机没有声音?完美解决
  20. C# 学习笔记:委托(5):可变性

热门文章

  1. cuSPARSE库:(八)cusparseGetStream()
  2. https://sysdig.com/blog/
  3. Linux 基础命令:IP 路由操作 -ip命令
  4. C语言局部变量、全局变量、静态局部变量、静态全局变量
  5. linux内核启动文件系统,Linux启动过程中文件系统的加载
  6. matplotlib之subplot和动态作图(笔记六)
  7. python 状态机第三方库_Python 状态机 - osc_8g11urw7的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. 计算机主机拆解,计算机硬件系统及主机拆解..ppt
  9. html流光按钮,【CSS】css实现流光效果-按钮流光显示效果-自发光
  10. abcdefg顺序Java打印,全国2012年10月自考JAVA语言程序设计(一)试题及答案