Flash Android ANE打包之基本流程
搭建环境这里就不详细说明了
一、Android本地库编写
1.从Flash Air SDK中提取需要的jar包
Android下需要的jar包在Flash Air SDK/lib/android目录下的FlashRuntimeExtensions.jar
2.建立Android工程,加入第一步提取的jar包
3.编写与as交互的主要类Extension,Context,Function
自定义Extension类,实现FREExtension接口
自定义Context类,继承FREContext类
自定义Function类,实现FREFunction接口
Function类可以定义多个,定义之后都注册在自定义Context类的getFunctions方法中
Sample:
public class TestExtension implements FREExtension {
@Override
public FREContext createContext(String arg0) {
// TODO Auto-generated method stub
return new TestContext();
}
@Override
public void dispose() {
// TODO Auto-generated method stub
}
@Override
public void initialize() {
// TODO Auto-generated method stub
}
}
public class TestContext extends FREContext {
@Override
public void dispose() {
// TODO Auto-generated method stub
}
@Override
public Map<String, FREFunction> getFunctions() {
HashMap<String, FREFunction> map = new HashMap<String, FREFunction>();
map.put("testToast", new TestToastFunction());
//可继续put其他function
return map;
}
}
public class TestToastFunction implements FREFunction {
@Override
public FREObject call(FREContext arg0, FREObject[] arg1) {
FREObject msg_ = arg1[0];
FREObject result=null;
try {
Toast.makeText(arg0.getActivity(), "测试成功:android本地被调用" + msg_.getAsString(), Toast.LENGTH_LONG).show();
result = FREObject.newObject("这是可返回的值");
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
4.把刚刚编写的工程以jar包的形式导出,命名jar包(如:HelloANENative.jar)
二、AS端
1.建立Flex库项目,选择配置为手机库
2.在项目的src目录下创建extension.xml文件,文件基本内容如下(查看更多属性):
<extension xmlns="http://ns.adobe.com/air/extension/3.3">
<id>com.adobe.ane.test</id>
<versionNumber>1</versionNumber> <platforms>
<platform name="Android-ARM">
<applicationDeployment>
<nativeLibrary>HelloANENative.jar</nativeLibrary><!--是之前导出的jar包-->
<!--即为Android本地FREExtension全路径-->
<initializer>com.cn.example.android.TestExtension</initializer>
<finalizer>com.cn.example.android.TestExtension</finalizer>
</applicationDeployment>
</platform>
</platforms> </extension>
3.编写一个AS的Extension类,主要作用是创建ExtensionContext,与Android的Native代码交互(建议使用单例)
package com.adobe.nativeExtensions.test
{
import flash.external.ExtensionContext;
public class HelloWorldExtension
{
public static const KEY:String = "testToast";//与java端中Map里的key一致
public static const EXTENSION_ID:String = "com.adobe.ane.test";//与extension.xml中的id标签一致
private var extContext:ExtensionContext;
public function HelloWorldExtension()
{ //第二个为参数,会传入java代码中的FREExtension的createContext方法
extContext = ExtensionContext.createExtensionContext(EXTENSION_ID,"");
}
public function hello(name:String):String{
if(extContext){
return extContext.call(KEY,name) as String;
}
return "call failed";
}
}
}
编译得到.swf文件(如:HelloANELibrary.swc)
到这一步,打包ane需要的文件都有了
三、打包ane
通过一、二步我们可以获得三个文件
HelloANENative.jar、HelloANELibrary.swc 、extension.xml
把HelloANELibrary.swc的后缀名改为.rar,解压获得library.swf文件,此时我们将得到四个文件
以一下目录把4个文件放好:
通过命令进入这个目录,执行
adt -package -storetype PKCS12 -keystore 123.p12 -storepass 123 -target ane helloworld.ane extension.xml -swc HelloANELibrary.swc -platform Android-ARM -C Android-ARM .
在当前目录下就可以看到helloworld.ane
adt -certificate -cn SelfSign -ou QE -o "Example, Co" -c US 2048-RSA newcert.p12 39#wnetx3tl
adt -certificate -cn ADigitalID 1024-RSA SigningCert.p12 39#wnetx3tl
四、测试ane
创建Flex手机项目,选择android为目标平台。
对着工程点击右键-属性,在属性面板的左边点击Flex构建路径,在选择本地扩展,添加ANE。
在点击属性面包左边的Flex构建打包,选择Google Android后点击本地扩展,对你需要引入的ANE包打勾,在点击确定
此时项目的引用的库下面就会出现你刚刚打勾的那些ANE包了。在flash项目中可以导入ANE中的类使用。
Flash Android ANE打包之基本流程的更多相关文章
- unity3d-配置Android环境,打包发布Apk流程详解
31:unity3d-配置Android环境,打包发布Apk流程详解 作者 阿西纳尼 关注 2016.08.28 22:52 字数 498 阅读 1806评论 0喜欢 5 Unity配置Android ...
- 【转】android Apk打包过程概述_android是如何打包apk的
最近看了老罗分析android资源管理和apk打包流程的博客,参考其他一些资料,做了一下整理,脱离繁琐的打包细节和数据结构,从整体上概述了apk打包的整个流程. 流程概述: 1.打包资源文件,生成 ...
- Android APK 打包过程 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- android Apk打包过程概述_android是如何打包apk的
流程概述:1.打包资源文件,生成R.java文件2.处理aidl文件,生成相应java 文件3.编译工程源代码,生成相应class 文件4.转换所有class文件,生成classes.dex文件5.打 ...
- 使用Jenkins进行Android自动打包,自定义版本号等信息【转】
之前App在提交测试和最终部署的过程中App打包一直是由开发人员来完成的,由于项目比较大, 再加上Android打包本身就比较慢,所以每次打包还是很耗时的.并且按照严格的研发流程来讲,开发人员应该只负 ...
- [原] Android自动打包之命令行打包
Android自动打包流程详细图: 总结为以下几个步骤: 1. 生成R文件 2. Java代码编译成class文件 3. class文件生成dex文件 4. 打包资源 5. 生成apk 6. 创建密匙 ...
- Android 全面插件化 RePlugin 流程与源码解析
转自 Android 全面插件化 RePlugin 流程与源码解析 RePlugin,360开源的全面插件化框架,按照官网说的,其目的是“尽可能多的让模块变成插件”,并在很稳定的前提下,尽可能像开发普 ...
- Android系统之LK启动流程分析(一)
1.前言 LK是Little Kernel的缩写,在Qualcomm平台的Android系统中普遍采用LK作为bootloader,它是一个开源项目,LK是整个系统的引导部分,所以不是独立存在的,但是 ...
- ANE打包工具使用视频教程 -- 梦宇技术 @极客学院
来源:http://xtiqin.blog.163.com/blog/static/17017217920133584934827/ ANE打包工具使用视频教程 2013-04-05 08:49:34 ...
随机推荐
- ArcGIS制图——多图层道路压盖处理
[1] 启动ArcMap,载入各道路要素类.生成名为All-Roads的图层组,如他所看到的,符号级别绘制将对图层组内图层符号起作用: 图层组设置符号等级 [2] 在内容列表中,右 ...
- 2015 Multi-University Training Contest 1
最近真是太废柴了,题没做几道,也没学什么新知识,多校做了三场也没总结~诶!好好学吧! 多校第一场感觉被完虐...orz... Hdu 5288 OO’s Sequence 题目链接:http://ac ...
- Android Sip学习(三)Android Voip实现
Android Sip学习(三)Android Voip实现 Android Sip学习(准备知识)SIP 协议完整的呼叫流程 Android Sip学习(一)Android 2.3 APIs S ...
- Cocos2dx中Plugin-X 在android下的整合
直接拉plugin-x中的jar包导入到Eclipse中就可以.用这么麻烦的工具干嘛.
- 学习VC MFC开发必须了解的常用宏和指令
1.#include指令 包含指定的文件 2.#define指令 预定义,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善.背后一长串”的宏,它本身并不在编译过程中进行,而 ...
- win32 sdk 列表视图控件绘制
////////////////////////////////////////////////////////////// LRESULT ListViewCustomDraw(HWND hwnd, ...
- 解决sqlserver2008 r2 登陆时报错:provider 命名管道提供程序, error40 错误2
错误截图: 这种错误是因为无法启动sqlserver服务,进入命令行,输入 services.msc 进入服务管理,找到sqlserver服务如下图. 在这里启动该服务会报错如下图: 此服务无法启 ...
- Java反射库中的安全漏洞在30个月后终于修复了(转)
2013年7月,安全组织Security Explorations发现了Java 7u25中的一个安全漏洞,通过这个漏洞攻击者可以完全摆脱Java沙箱.Oracle在更新的7u40中包含了一个补丁,但 ...
- TCP连接的建立(二)
被动打开 SYN cookies TCP协议开辟了一个比較大的内存空间请求连接队列来存储连接请求块,当SYN请求不断添加,请求连接数目到达上限时,会致使系统丢弃SYN连接请求.SYN cookies技 ...
- [Android学习笔记]View的draw过程学习
View从创建到显示到屏幕需要经历几个过程: measure -> layout -> draw measure过程:计算view所占屏幕大小layout过程:设置view在屏幕的位置dr ...