ANE打包

哈哈,曾经梦寐以求的ANE终于弄成功了一个。说实话,学java和Android就是为了写ANE!好啦,今天把我体会到的记录一下:

网上其实打包ANE的教程好多,我也找了好多好多。但是好多我自己试了还是没有弄成功,可能是我智商有问题。

我使用的工具:

Eclipse-ADT

flashBuilder

flash cs6

flex中创建项目:

As源码:

package randy.util.log
{
    import flash.external.ExtensionContext;

    public class LogUtil
    {
            private static var _extensionContext:ExtensionContext=null;
            private static const EXTENSION_ID:String="randyUtilLog";
            private static const LOG_FUNCTION:String="fn_log";

            public static const DEBUG:String="debug";
            public static const VERBOSE:String="verbose";
            public static const INFO:String="info";
            public static const WARN:String="warn";
            public static const ERROR:String="error";

            public static function log(msg:String,level:String=LogUtil.INFO,tag:String="非若"):void
            {
                if(!_extensionContext)
                {
                    _extensionContext=ExtensionContext.createExtensionContext(EXTENSION_ID,null);
                }
                _extensionContext.call(LOG_FUNCTION,msg,level,tag);
            }
        }
}

拿出我们需要的swc文件ANE_log.swc !

然后在Eclipse-ADT中创建android项目:

然后给项目添加 FlashRuntimeExtensions.jar

Jar文件在flashBuilder安装文件下sdks/4.6.0/lib/android目录下面;我的是D盘,4.6.0版本;

可以直接ctrl+C、ctrl+V到android项目文件里面的lib文件夹路径就OK啦

然后就开始java类编辑:

Java源码:

package randy.util.log;

import java.util.Map;

import java.util.HashMap;

import com.adobe.fre.FREContext;

import com.adobe.fre.FREFunction;

public class LogContext extends FREContext {

    private static Map<String,FREFunction> functions=null;

         @Override

         public void dispose() {

                   // TODO Auto-generated method stub

         }

         @Override

         public Map<String, FREFunction> getFunctions() {

                   if(functions==null){

                            functions=new HashMap<String,FREFunction>();

                            functions.put(LogFunction.FUNCTION_KEY, new LogFunction());

                   }

                   return functions;

         }

}

/*****************************************************************************/

package randy.util.log;

import com.adobe.fre.FREContext;

import com.adobe.fre.FREExtension;

public class LogExtension implements FREExtension {

    private LogContext logExtension=null;

         @Override

         public FREContext createContext(String arg0) {

                   if(logExtension==null){

                            logExtension=new LogContext();

                   }

                   return logExtension;

         }

         @Override

         public void dispose() {

                   // TODO Auto-generated method stub

         }

         @Override

         public void initialize() {

                   // TODO Auto-generated method stub

         }

}

/************************************************************************/

package randy.util.log;

import android.util.Log;

import com.adobe.fre.FREContext;

import com.adobe.fre.FREFunction;

import com.adobe.fre.FREObject;

public class LogFunction implements FREFunction {

    public static final String FUNCTION_KEY="fn_log";

         @Override

         public FREObject call(FREContext arg0, FREObject[] arg1) {

                   try{

                            String msg=arg1[0].getAsString();

                            String level=arg1[1].getAsString();

                            String tag=arg1[2].getAsString();

                            if("debug".equals(level)){

                                     Log.d(tag, msg);

                            }else if("verbose".equals(level)){

                                     Log.v(tag, msg);

                            }else if("info".equals(level)){

                                     Log.i(tag, msg);

                            }else if("warn".equals(level)){

                                     Log.w(tag, msg);

                            }else if("error".equals(level)){

                                     Log.e(tag, msg);}

                            }catch(Exception e){}

                   return null;

         }

}

到此,就OK了第二步!

然后点击java文件包右击到处我们要用到的jar文件:

点击finish完成!

然后让我们来创建数字证书:

打开flashcs6:

创建一个AIR for Android项目

然后点击确定,证书就创建好在桌面了

然后新建一个文件夹在桌面,比如log

Adt.jar在flashbuilder安装目录lib下可以复制粘贴过来

然后复制swc文件,并将扩展名改为zip,双击进去

把里面的文件解压出来

然后就差一个描述文件咯

新建记事本

输入:

<extension xmlns="http://ns.adobe.com/air/extension/3.1">

  <id>randyUtilLog</id>

  <versionNumber>1</versionNumber>

  <platforms>

    <platform name="Android-ARM">

      <applicationDeployment>

        <nativeLibrary>aneLog.jar</nativeLibrary>

        <initializer>randy.util.log.LogExtension</initializer>

        <finalizer>randy.util.log.LogExtension</finalizer>

      </applicationDeployment>

    </platform>

  </platforms>

</extension>

Txt改为xml

就像这样

然后桌面键+R,输入cmd,确定:

进入adt.jar所在文件路径:

Cd  C:\Users\feiruo\Desktop\log

然后输入打包命令行:

java -jar adt.jar -package -tsa none -storetype pkcs12 -keystore feiruo.p12 -storepass 123456 -target ane ExtensionLog.ane extension.xml -swc ANE_log.swc -platform Android-ARM library.swf aneLog.jar

-keystore feiruo.p12:数字证书的名字

-storepass 123456:数字证书密码

-target ane ExtensionLog.ane:要打包ANE的名字

extension.xml:描述文件

-swc ANE_log.swc:swc库文件

然后log文件夹下会生成一个ExtensionLog.ane文件

时间: 2024-10-19 15:54:01

ANE打包的相关文章

air 4.0+,Ane打包注意事项【适用Android】

[适合阅读]适用于air sdk 4.0之前,会打包Ane的同学们.如果您之前,没有经验,可以直接留言问题,我会依依解答. [本文目标]:air 4.0+ ,能很好的有效支持 R*文件机制.简言之,可以不用getResourceID()的方式引用资源,Android程序中,可以直接用 R.x.x引用资源. [安装] air sdk : http://helpx.adobe.com/air/kb/archived-air-sdk-version.html   (下载4.0+版本,包含4.0) 如果

Ant编译的jar文件,ANE不识别

Ant编译的jar文件,ANE不识别 问题描述 Android的ANE打包需要jar文件.Eclipse可以提供jar文件的导出. 然而,当我使用Ant来自动化完成ANE打包流程的时候,jar文件出了问题. 如果使用Ant生成的jar文件来打包ANE.那么ANE在使用的时候,会发生 ExtensionContext 无法初始化的情况. 也就是说,在调用 ExtensionContext.createExtensionContext(EXTENSION_ID) 的时候,得到的永远是null. 问题

开发QQ互联ios版Ane扩张 辛酸史

来源:http://www.myexception.cn/operating-system/1451490.html 开发QQ互联ios版Ane扩展 辛酸史 开发QQ互联ios版Ane扩展辛酸史: 1.安装mac系统非常痛苦,找了好几个版本都装不上,同时对mac的基本操作和xcode的基本操作不熟悉. 2.用xcode建立ane项目(使用xcode-template-ane-master模板),引入第三方object-cframework,生成.a文件,供windows下生成ane文件. 发现w

ANE接入平台心得记录(安卓)

开发环境:FlashBuilder4.7 AIR13.0 Eclipse 由于我懒得陪安卓的开发环境所以我下载了包含安卓SDK Manager的Eclipse,其实直接用FlashBuilder开发ANE也是可以的,由于后面需要进行调试,个人认为使用Eclipse和FlashBuilder协作调试还是较为方便的. 首先不得不说ANE的制作对于技术的要求远不如对打包流程的细心要求高,写这篇博客的时候我刚刚完成<百万手办王>项目接入TrueChina平台的ANE制作,耗时2天,基本上遇到了大大小小

Flash Air 打包安卓 ane

工具: 1.flash builder 2.adt打包工具 3.数字证书 一. 创建 jar 文件 1. 打开flash builder, 新建一个java 项目. 2.点击项目属性,选择Java构建路径,选择库,然后添加外部JAR,选择路径,添加FlashRuntimeExtension.jar 3.在项目src文件下建一个包,包名自定,然后在这个包下建3个java类. 各java代码如下: Extension.java类: 1 package com.three; 2 import com.

ANE 从入门到精通 --- 一键打包ANE

每次都要执行好几步才能编译出ANE很是麻烦,使用如下脚本 一键完成复杂的流程 REM 好压HaoZipC文件所在的位置,7Zip,WinRAR等均可 Set Zip=D:\"Program Files"\Haozip\HaoZipC.exe REM 项目生成的SWC文件所在的目录 Set SWC_Orignal_Path=E:\WorkSpace\Android\TestZone2\out\swc REM SWC文件的名字 Set SWC_Name=T2SWC.swc REM JAR文

ANE 从入门到精通 --- 简单的Whatever

Flash还是很好的,不过国内没人用. Whatever了. 以下是ANE制作中的一点笔记 分享下 也留作备份 Step1 编写As3 Library package com.eran { import flash.external.ExtensionContext; import flash.system.Capabilities; public class WhateverNameAS { private static var mInstance:WhateverNameAS; public

ShareSDKForANE 打包笔记

最近做了一个ShareSDK IOS的接入 (ANE) , 现在想想其实很简单 不过由于对Xcode,ANE的不熟悉也折腾了好久, 舔着脸打扰客服好几天… 呵呵 目前把我接入的一些步骤列出来 希望能帮到你. 准备工作 0· Mac机器一台,最新的AIRSDK1·下载你需要的SDK(定制下载,勾选你自己需要的分享平台)2·下载https://github.com/ShareSDKPlatform/ANESample 编译libShareSDKForANE.a 运行ANESample-master/

ANE-如何加入ane,调试时又不报错

有时候我们加入ane,即使没有调用ane的功能,debug的时候也会报错无法调试,这是为什么呢?因为我们的ane没有把default包含进去. 首先我们的extension.xml要把default节点包含进去 <extension xmlns="http://ns.adobe.com/air/extension/3.1"> <id>net.digitalprimates.volume</id> <versionNumber>0.0.1&