守望者--AIR技术交流

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: ANE FlasCC 炼金术
查看: 2533|回复: 0
打印 上一主题 下一主题

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

[复制链接]
  • TA的每日心情
    擦汗
    2018-4-10 15:18
  • 签到天数: 447 天

    [LV.9]以坛为家II

    1742

    主题

    2094

    帖子

    13万

    积分

    超级版主

    Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

    威望
    562
    贡献
    29
    金币
    52903
    钢镚
    1422

    开源英雄守望者

    跳转到指定楼层
    楼主
    发表于 2014-12-30 21:52:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    开发环境: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中



    GameMain-app.xml中



    ExtensionContext.as中



    一定要确保上面标注的ID要保持一致。如果不一致当然编译不会报错,但是你的ANE肯定是运行不起来了。

    请务必确定在GameMain-app.xml中加入了权限和activity 的描述,一定要确保和SDK提供的保持一致,如果出错和漏填会导致程序的奔溃或者ANE没反应之类的问题。

    下面是JAR文件的打包需要注意的事项:



    上面标注的地方要注意,首先得是一个库文件,然后导入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文的,中文版的缺少以下的描述




    真的真的是说的太简单了,害的我尝试了好多次。下面是详细说明
    AIR4.0开始ANE对安卓的R*机制提供了支持,从根本上解决了资源ID不正确,第三方包没法读取资源的问题。而且你不再需要对jar包进行手动的合并了:如下图




    把你需要的所有jar除了FlashRuntimeExtensions.jar,(这个ANE打包过程中会自动添加)放在同一个文件夹中就可以了。

    下面是我的打包命令

    1. @echo off
    2. ::转到当前盘符
    3. %~d0
    4. ::打开当前目录
    5. cd %~dp0
    6. set FLEX_SDK="D:\Program Files (x86)\FlashDevelop\Tools\flexsdk\bin\adt.bat"

    7. %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的结构。先贴出一个范例

    1. <platform xmlns="http://ns.adobe.com/air/extension/13.0">
    2. <description>An optional description.</description>
    3. <copyright>2011 (optional)</copyright>
    4. <packagedDependencies>
    5. <packagedDependency>alipay.jar</packagedDependency>
    6. <packagedDependency>android-support-v4.jar</packagedDependency>
    7. <packagedDependency>true_sdk_lib.jar</packagedDependency>
    8. </packagedDependencies>
    9. <packagedResources>
    10. <packagedResource>
    11. <packageName>com.alipay.android.app.sdk</packageName>
    12. <folderName>true-res</folderName>
    13. </packagedResource>
    14. </packagedResources>
    15. </platform>
    复制代码
    <packagedDependencies>标签对应的是所有的依赖库,就是放置jar文件夹中除了充当AS和Java桥梁作用的我们自己写的那个JAR除外的所有的JAR。(这就是为什么你需要手动打包JAR的原因了)
    <packagedResource>标签描述的是哪个包对应什么资源。这个很重要填写了这个就可以支持R*模式获取资源了。
    <packageName>对应一个包名称,ADT会在这个包中生成一个额外的R.java。这样第三方包就可以通过R*获取资源了
    <folderName>对应一个文件夹名称,(名称不限制可自定义)这个文件夹包含<packageName>这个包所需的所有资源。
    <packageName>中包名的快速的定位:




    第三方库中/gen中可以很快看出这个R.java的位置。所以我的<packageName>中填写了com.alipay.android.app.sdk。

    我们反编译一下apk可以发现设置了-platformoptions 后ADT会在我们定义的<packageName>下生成一个额外的R,这样我们的第三方库就可以得到资源了。
    这是AIR的R




    这是根据xml生成的额外的R



    本篇就到这了~下篇介绍原生代码的调试。
    ANE原生代码的调试(安卓)

    本文来自:http://tmtbe.blog.163.com/blog/static/3965819420144911379481/



    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
    收藏收藏 分享分享 支持支持 反对反对 微信
    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    
    关闭

    站长推荐上一条 /4 下一条

    QQ|手机版|Archiver|网站地图|小黑屋|守望者 ( 京ICP备14061876号

    GMT+8, 2026-1-25 00:11 , Processed in 0.073071 second(s), 33 queries .

    守望者AIR

    守望者AIR技术交流社区

    本站成立于 2014年12月31日

    快速回复 返回顶部 返回列表