• 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中的类使用。


  • 相关阅读:
    Django框架----路由系统(详细)
    Django框架----路由系统、视图和模板(简单介绍)
    Django框架----模板继承和静态文件配置
    Django框架----模板语法
    毕昇杯之无线通信模块
    新版本ubuntu13.10软件安装
    毕昇杯总结1
    调试程序的方法总结
    新年,新气象
    基于51,人体红外感应和RC522的门禁系统
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3159628.html
Copyright © 2020-2023  润新知