About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • Oct

    8

    安卓 ANE 制作资料备忘录(四):最简单的安卓 ANE 制作教程(转载)

    • 0 Comments
    • Java
    • 发布:古树悬叶
    • 引用:0
    • 浏览:

    一篇自己觉的最简单的 ANE 教程,与其说是教程,不如说它是制作的流程,很简单,又是 ZERO 写的,值得收藏一下。

    了解了流程后就会觉的 ANE 的制作过程其实就是简单到弱爆了。觉的 ANE 制作难的原因我想是因为 Flash 平台开发者对原生开发环境和原生语言的不熟悉。比如 ADT-Bundle 与 XCODE ,Java 与 Objective-C 语言。其中语言部份大多能在 GitHub 上找类似代码或模版文件(安卓可能更容易些,因为存在类似 JD-GUI 这样的反编译工具可以查看别人的源代码)。

    按着这个教程成功的制作出了第一个安卓 ANE 程序,大多时间其实是花在了 ADT-Bundle 这个工具(包括 Android Studio)以及它们所涉及的 SDK 部份的了解上。

    以下内容为转载部份

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    打开FlashBuilder4.7,新建一个"ActionScript 库项目”;包括 Adobe AIR 库,完成:

    右键项目,新建一个 ActionScript 类“com.zero.MyANE”;弄个 ExtensionContext  的实例 ec;如无意外,bin/ 下就应该有一个“MyANE.swc”喽: 

    如果没有,可能是没有勾选“自动构建”,可以右键项目,构建一下。 

    打开 Java ADT,新建一个“Android Application Project”;包名切记用跟上面 swc 一样的“com.zero”: 

    不勾“Create activity”;勾上“Mark this project as a library”;选个合适的路径保存工程: 

    从 AIRSDK 中把“FlashRuntimeExtensions.jar”拷到工程的 libs/ 下:

    拷完了记得刷新工程。

    右键 src,新建一个类“com.zero.MyANE”,接口是“com.adobe.fre.FREExtension”: 

    建完后会自动加上接口的所有方法。 

    右键 com.zero,新建一个类“com.zero.MyANEContext”,扩展“com.adobe.fre.FREContext”(别问我为什么我特么也是抄的): 

    右键 com.zero,新建一个类“com.zero.MyFun”,接口是“com.adobe.fre.FREFunction”。把 MyANE 第11行的“return null;”改成“return new MyANEContext();”: 

    把 MyANEContext 第19行的“return null;”改成返回一个“HashMap”:  

    在 MyFun 第12行的“return null;”前面插入一行“Toast.makeText(arg0.getActivity(), "调用了 MyFun 的 call", Toast.LENGTH_SHORT).show();”: 

    如无意外,bin/ 下就应该有一个“ane.jar”喽: 

    新建一个文件夹“打包ANE”,里面再建一个文件夹“Android-ARM”。打包ANE/ 目录下放:MyANE.swc,证书“1234.p12”,还要一个“extension.xml”,内容是:

    <extension xmlns="http://ns.adobe.com/air/extension/15.0">
      <id>com.zero</id>
      <versionNumber>1</versionNumber>
      <platforms>
        <platform name="Android-ARM">
          <applicationDeployment>
            <nativeLibrary>ane.jar</nativeLibrary>
            <initializer>com.zero.MyANE</initializer>
            <finalizer>com.zero.MyANE</finalizer>
          </applicationDeployment>
        </platform>
      </platforms>
    </extension>

    我的AIRSDK放在“D:\AIRSDK\”,版本是15.0;其他参数可参考:开发和使用针对 Android 设备的 Adobe AIR 原生扩展

     Android-ARM/ 目录下放 ane.jar;然后用WinRAR啥的打开“MyANE.swc”,解压“library.swf”和“catalog.xml”到 Android-ARM/ 下: 

    然后写一个打包脚本“打包ANE.bat”: 

    双击就可以打包ANE。这里有必要说明一下的是,“打包ANE.bat”经常会运行不一会就退出,而且ANE也没成功生成(里面的“echo.&pause”是无效的,不会停下来让你看原因)。

    我的解决办法是弄一个“运行CMD.bat”,双击打开可以原地运行一个cmd窗口: 

    右键粘贴打包代码,Enter 运行: 

    比如提示:“F:\zero\android2014\20141001\4\打包ANE\extension.xml(8): error 105: extension.platforms.platform.applicationDeployment.nativeLibrary contains an invalid value”,

    是说 nativeLibrary 节点有不合法的值,比如下划线,空格之类: 

    常见的还有比如:“Invalid swc file. The extension NameSpace requires the SWF verison to be 26 or lower.”,

    一般是 SWC 项目的 AIRSDK 版本比打包 ANE 的 AIRSDK 版本高造成的,可以换 AIRSDK,或者编译 SWC 时加上参数“-swf-version=26”: 

    一切顺利,就可以看到打包出来的“MyANE.ane”啦: 

    打开FlashBuilder4.7,新建一个“ActionScript 手机项目”;本机扩展添加刚才好不容易生成的“MyANE.ane”: 

    调用 MyFun: 

    在手机上调试的效果: 

    Toast 是“吐司”的意思,大家说这小框框像不像吐司。传参并获取返回值: 

    Java 里改成对应的: 

    重新打包 ane,更新项目,调试。调试效果: 

     

    附件贴子相关附件打包下载.zip

    原文《[安卓开发整理]——ANE》链接:http://bbs.9ria.com/thread-418251-1-1.html,作者 ZERO 。
     
    另一篇英文版类似入门教程:《Developing Android Extensions for AIR 3: A Beginner's Guide》,作者 Milkman。
     
    其它官方相关的中文入门教程系列链接
     
    官方博客里的 ANE 教程http://www.adobe.com/cn/devnet/air/articles/ane-android-devices.html作者 Mark Hood
     
    如果不是安卓开发,更简单的桌面 JAVA 的 ANE 教程http://bbs.9ria.com/thread-156257-1-1.html
     
     
     
     
    • Tags: ANE  
    • 2015 / 10 / 8