1.编写AndroidAne.jar:

a.编写SkyContext.java:

import java.util.HashMap;
import java.util.Map;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;

public class SkyContext extends FREContext{

@Override
    public void dispose() {}
    @Override
    public Map<String, FREFunction> getFunctions() {
        HashMap<String, FREFunction> map = new HashMap<String, FREFunction>();
        map.put("testFunction", new TestToastFunction());
        //可继续put其他function
        return map;
    }

}

b.编写SkyExtension.java:

import com.adobe.fre.FREExtension;
import com.adobe.fre.FREContext;

public class SkyExtension implements FREExtension{
    @Override
    public FREContext createContext(String pType) {
        return new SkyContext();
    }
    @Override
    public void dispose() {}
    @Override
    public void initialize() {}
}

c.编写TestToastFunction.java:

import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREObject;
//import android.widget.Toast;

public class TestToastFunction implements FREFunction{
    @Override
    public FREObject call(FREContext context, FREObject[] params) {
        return null;
    }

}

2.编写AndroidAne.ane:

a.编写extension.xml:

<?xml version="1.0" encoding="UTF-8"?>
<extension xmlns="http://ns.adobe.com/air/extension/3.7">
    <id>extTest</id>
    <versionNumber>1</versionNumber>
    <platforms>
        <platform name="Android-ARM">
            <applicationDeployment>
                <!--即为Android本地导出的jar包名-->
                <nativeLibrary>AndroidAne.jar</nativeLibrary>
                <!--即为Android本地FREExtension全路径-->
                <initializer>SkyExtension</initializer>
                <finalizer>SkyExtension</finalizer>
            </applicationDeployment>
         </platform>
    </platforms>
</extension>

b.编写HelloWorldExtension.as:

package
{
    import flash.external.ExtensionContext;
    public class HelloWorldExtension
    {
        public static const KEY:String = "testFunction";
        public static const EXTENSION_ID:String = "extTest";
        private var extContext:ExtensionContext;
        public function HelloWorldExtension()
        {
            extContext = ExtensionContext.createExtensionContext(EXTENSION_ID,"");
        }
        public function hello(name:String):String{
            if(extContext){
                return extContext.call(KEY,name) as String;
            }
            return "mlgb";
        }
    }
}

c.生成swc:

acompc -compiler.debug=false -external-library-path+=D:/FlexSDK/frameworks/libs/framework.swc  -swf-version=20 -compiler.source-path ./src \
    -include-sources ./src -output AndroidAne.swc

从AndroidAne.swc解压出library.swf

d.生成ANE:

adt -package -target ane AndroidAne.ane extension.xml  -swc AndroidAne.swc -platform Android-ARM library.swf AndroidAne.jar

3.在工程中引用AndroidAne.ane即可

var tt : HelloWorldExtension = new HelloWorldExtension;

trace(tt.hello("why"));

如何编写android ANE的更多相关文章

  1. Visual Studio 开始支持编写 Android 程序并自带 Android 模拟器【转载】

    原文地址 本文内容 为什么需要一个 Android 模拟器 针对 Visual Studio Android 模拟器的调试 Visual Studio Android 模拟器的传感器模拟和其他功能 A ...

  2. 用Eclipse编写Android程序的代码提示功能

    用Eclipse编写Android程序的代码提示功能主要是在java和xml文件中,有时候会失效,默认的提示功能有限. 1)java文件自动提示     Window->Preferences- ...

  3. 20162311 编写Android程序测试查找排序算法

    20162311 编写Android程序测试查找排序算法 一.设置图形界面 因为是测试查找和排序算法,所以先要有一个目标数组.为了得到一个目标数组,我设置一个EditText和一个Button来添加数 ...

  4. [转]编写 android.mk 中 LOCAL_C_INCLUDES 的技巧

    看原文请移步:编写 android.mk 中 LOCAL_C_INCLUDES 的技巧 在编写android.mk的过程中,免不了要修改LOCAL_C_INCLUDES来设置头文件的include目录 ...

  5. [转]编写Android.mk中的LOCAL_SRC_FILES的终极技巧

    希望看原文的请移步:[原创]编写Android.mk中的LOCAL_SRC_FILES的终极技巧 问题的引入 在使用NDK编译C/C++项目的过程中,免不了要编写Android.mk文件,其中最重要的 ...

  6. 利用Android Studio编写 Android上的c与c++程序

    利用Android Studio编写 Android上的c与c++程序 (2017-05-22 19:01:20) 转载▼ 标签: android 分类: Android开发 原文链接: http:/ ...

  7. 自己编写Android Studio插件 别停留在用的程度了(转载)

    转自:自己编写Android Studio插件 别停留在用的程度了 1概述 相信大家在使用Android Studio的时候,或多或少的会使用一些插件,适当的配合插件可以帮助我们提升一定的开发效率,更 ...

  8. 编写Android.mk中的LOCAL_SRC_FILES的终极技巧(转)

    转自:http://blog.csdn.net/fu_zk/article/details/12836431 问题的引入 在使用NDK编译C/C++项目的过程中,免不了要编写Android.mk文件, ...

  9. Flash Android ANE打包之基本流程

    搭建环境这里就不详细说明了 一.Android本地库编写 1.从Flash Air SDK中提取需要的jar包 Android下需要的jar包在Flash Air SDK/lib/android目录下 ...

随机推荐

  1. Latex常用指令学习

    1:\begin{}与\end{}的用法 2:\textcolor{red}{\fangsong\zihao{2}汉字:} 3:\newpage  新的一页 4:\heiti\zihao{4}\bf{ ...

  2. 内存缓存机制and垃圾回收机制

    一.内存缓存机制 var_dump(memory_get_usage(true)); $a="laruence"; var_dump(memory_get_usage(true)) ...

  3. RobotFrameWork webservice soap接口测试 (二)

    上一篇提到做soap接口测试自己简单的写了个py,然后就简单的实现了个客户端能对远程接口进行调用,对返回的数据进行解析,可后面想着也觉得不对劲,soap协议虽说不像http协议那么普及,但是现在很多公 ...

  4. Firefox刷新页面和复选框的奇葩问题

    Firefox刷新页面后数据还在,估计很多人都碰到过. 但是有一个奇怪的地方就是复选框,如果你默认是勾选了,然后访问者取消勾选,刷新完之后,还是没有勾选,这是为什么? Firefox奇葩的地方就在于c ...

  5. Wamp 设置 www 目录

    打开httpd.conf,搜索wwwroot 和 directory 直接改为新目录即可. 对于wamp3是无效的,可以这样解决: “You need to change these values a ...

  6. dr.wondr博士随笔之三星某古董智能机GTXXXX 的取证恢复一例

    大家好!欢迎来到我dr.wonde博士的微博! 这是dr.wonde的第一篇微博,不足之处,还请见谅. 今天dr.wonde给你们带来不可能的数据恢复任务之三星非智能机古董机GT-E1088C 的恢复 ...

  7. smarty中增加类似foreach的功能自动加载数据方法

    第一步:在Smarty_Compiler.class.php的_compile_tag函数中增加: 复制代码 代码如下: //加载数据的开始标签case 'load': $this->_push ...

  8. 如何在Linux中查看所有正在运行的进程

    如何在Linux中查看所有正在运行的进程 FROM:http://os.51cto.com/art/201101/244090.htm 进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系 ...

  9. android获取状态栏高度

    获取android屏幕上状态栏的高度方法网上很多这里不再敖述,只举一个例子 Rect rect = new Rect();getWindow().getDecorView().getWindowVis ...

  10. 创建一个叫做People的类: 属性:姓名、年龄、性别、身高 行为:说话、计算加法、改名 编写能为所有属性赋值的构造方法; (2)创建主类: 创建一个对象:名叫“张三”,性别“男”,年龄18岁,身高1.80; 让该对象调用成员方法: 说出“你好!” 计算23+45的值 将名字改为“李四”

    package com.chuoji; public class People { private String name; private int age; private String sex; ...