zoukankan      html  css  js  c++  java
  • ANE接入平台心得记录(安卓)

    开发环境:FlashBuilder4.7 AIR13.0 Eclipse

    由于我懒得陪安卓的开发环境所以我下载了包含安卓SDK Manager的Eclipse,其实直接用FlashBuilder开发ANE也是可以的,由于后面需要进行调试,个人认为使用Eclipse和FlashBuilder协作调试还是较为方便的。
     
    首先不得不说ANE的制作对于技术的要求远不如对打包流程的细心要求高,写这篇博客的时候我刚刚完成《百万手办王》项目接入TrueChina平台的ANE制作,耗时2天,基本上遇到了大大小小无数的坑,本篇文章主要记录的开发ANE过程中需要注意的事情和怎么利用Eclipse和FlashBuilder一起来调试安卓ANE原生代码。
     
    由于Adobe的AIR13.0对ANE的打包进行了不错的优化,不需要手动的合并JAR文件,并且可以支持R*模式取得资源,这对ANE的开发者来说是个福音。
     
    本文不介绍ANE的一些基础编程,这里备注一个Adobe的官方教程
    http://www.adobe.com/cn/devnet/air/articles/ane-android-devices.html
    上面的这个教程还是写的比较详细的,但是有些细节没有仔细说明,本文是对他的描述作补充。
     
    下面是ANE打包可能出错的地方。
    extension.xml中ANE接入平台心得记录(安卓) - tmtbe - °无量

     GameMain-app.xml中

    ANE接入平台心得记录(安卓) - tmtbe - °无量
     ExtensionContext.as中
    ANE接入平台心得记录(安卓) - tmtbe - °无量
     一定要确保上面标注的ID要保持一致。如果不一致当然编译不会报错,但是你的ANE肯定是运行不起来了。
     
     请务必确定在GameMain-app.xml中加入了权限和activity 的描述,一定要确保和SDK提供的保持一致,如果出错和漏填会导致程序的奔溃或者ANE没反应之类的问题。
     
    下面是JAR文件的打包需要注意的事项:
    ANE接入平台心得记录(安卓) - tmtbe - °无量
     
    上面标注的地方要注意,首先得是一个库文件,然后导入sdk的库。
     
     编写好代码取bin目录下的*.jar,这里面的JAR文件最为干净。
     
    AS库所注意的问题,他得是个flex库(as库不知道行不行,反正flex库是一定可以的)确保勾选包含ADOBE AIR库!
     
    下面是打包ANE所需要的准备
    这里同样提供Adobe官方的文档
    http://help.adobe.com/en_US/air/extensions/WSf268776665d7970d-2e74ffb4130044f3619-7ff8.html#WSA61FD03D-6F46-4ff9-A77A-9D47C47501F3
    这是E文的,中文版的缺少以下的描述
    ANE接入平台心得记录(安卓) - tmtbe - °无量
     真的真的是说的太简单了,害的我尝试了好多次。下面是详细说明
    AIR4.0开始ANE对安卓的R*机制提供了支持,从根本上解决了资源ID不正确,第三方包没法读取资源的问题。而且你不再需要对jar包进行手动的合并了:如下图
    ANE接入平台心得记录(安卓) - tmtbe - °无量
    把你需要的所有jar除了FlashRuntimeExtensions.jar,(这个ANE打包过程中会自动添加)放在同一个文件夹中就可以了。
     
    下面是我的打包命令
    @echo off
    ::转到当前盘符
    %~d0
    ::打开当前目录
    cd %~dp0
    set FLEX_SDK="D:Program Files (x86)FlashDevelopToolsflexsdkinadt.bat"
     
    %FLEX_SDK% -package -target ane com.tmtbe.truechina.ane extension.xml -swc TrueChinaANEAS.swc -platform Android-ARM -platformoptions platform-android.xml -C android . -platform default -C default .
     
    可以从打包命令中发现多了一个叫 -platformoptions的参数和一个对应的platform-android.xml。下面详细介绍platform-android.xml的结构。先贴出一个范例
     
    <platform xmlns="http://ns.adobe.com/air/extension/13.0">
    <description>An optional description.</description>
    <copyright>2011 (optional)</copyright>
    <packagedDependencies>
    <packagedDependency>alipay.jar</packagedDependency>
    <packagedDependency>android-support-v4.jar</packagedDependency>
    <packagedDependency>true_sdk_lib.jar</packagedDependency>
    </packagedDependencies>
    <packagedResources>
    <packagedResource>
    <packageName>com.alipay.android.app.sdk</packageName>
    <folderName>true-res</folderName>
    </packagedResource>
    </packagedResources>
    </platform>
     
    <packagedDependencies>标签对应的是所有的依赖库,就是放置jar文件夹中除了充当AS和Java桥梁作用的我们自己写的那个JAR除外的所有的JAR。(这就是为什么你需要手动打包JAR的原因了)
    <packagedResource>标签描述的是哪个包对应什么资源。这个很重要填写了这个就可以支持R*模式获取资源了。
    <packageName>对应一个包名称,ADT会在这个包中生成一个额外的R.java。这样第三方包就可以通过R*获取资源了
    <folderName>对应一个文件夹名称,(名称不限制可自定义)这个文件夹包含<packageName>这个包所需的所有资源。
    <packageName>中包名的快速的定位:
    ANE接入平台心得记录(安卓) - tmtbe - °无量
     
     第三方库中/gen中可以很快看出这个R.java的位置。所以我的<packageName>中填写了com.alipay.android.app.sdk。
     
    我们反编译一下apk可以发现设置了-platformoptions 后ADT会在我们定义的<packageName>下生成一个额外的R,这样我们的第三方库就可以得到资源了。
    这是AIR的R
    ANE接入平台心得记录(安卓) - tmtbe - °无量
     这是根据xml生成的额外的R
    ANE接入平台心得记录(安卓) - tmtbe - °无量
     
     本篇就到这了~下篇介绍原生代码的调试。
  • 相关阅读:
    用Python写春联:抒写最真诚的祝福和最美好的祈愿
    python 注册表操作
    python 多参数
    arcgis tin版本转换使用复制tin
    python基础知识
    模型免费学习地址https://space.bilibili.com/378493128?spm_id_from=333.788
    在Python中用turtle函数画同心圆
    solr系统query检索词特殊字符的处理
    C#winform抓取百度,Google搜索关键词结果
    理解Solr缓存及如何设置缓存大小
  • 原文地址:https://www.cnblogs.com/jiahuafu/p/4595682.html
Copyright © 2011-2022 走看看