因为公司的项目是flash air的,所以会需要用到安卓的本地拓展,在网上找了很多关于如何写ane的文章,但是还是遇到了不少的坑。不过所幸最终还是自己解决了。
本文介绍的是:
ane+Android的,ane+ios的暂时没有涉及到,因为苹果的环境设置比安卓的要复杂一些,我这篇博客只是将ane+android做了一个简单的toast显示,如果有不懂的可以发邮件给我,邮箱地址在本文底部。
准备工作
1.Flash Builder 4.6
2.Android Studio
3.JDK/JRE
创建flash本地拓展库
直接上图
因为之前我已经创建过了,所以这里会有提示项目同名,不要紧,接着往下走,在库项目里创建一个AndroidToast.as文件,因为我这个测试的项目是想通过ane调用到安卓的Toast做测试,所以这样命名,你也可以选择你自己想要的命名。
1.
public class AndroidToast extends EventDispatcher
继承自EventDispatcher是因为需要在安卓底层完成某些事情之后,方便通知Air层的通知信息,看到网上大多数人都这样写,我能想到的目的好像就只有这一个。
2.
extCtx = ExtensionContext.createExtensionContext(“com.roub.Toast”,”“);
extCtx.addEventListener(StatusEvent.STATUS, onStatus); // 添加回调事件返回监听
通过ExtensionContext来访问本地代码 ,等于说这个东西就是承接上下文的中转,在安卓底层可以通过它的call()方法来调用到安卓的代码以及逻辑。
EXTENSION_ID:是我们创建的扩展的唯一标识,这个东西很重要,需要写在你的配置文件.xml里面,就是上面的“com.roub.Toast”
这里如果你没有找到ExtensionContext类的话,应该是你本地的SDK不是AIR的SDK,这个现在网上应该也有下载的,如果你实在是不知道怎么下载,文章底部我会留下联系方式,你可以给我发邮件,写完之后,代码大致如下。
package com.roub.Toast
{
import flash.events.EventDispatcher;
import flash.events.StatusEvent;
import flash.external.ExtensionContext;
public class AndroidToast extends EventDispatcher
{
public var extCtx:ExtensionContext=null;
public function AndroidToast()
{
extCtx = ExtensionContext.createExtensionContext("com.roub.Toast","");
extCtx.addEventListener(StatusEvent.STATUS, onStatus); // 添加回调事件返回监听
}