开发环境: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打包过程中会自动添加)放在同一个文件夹中就可以了。
下面是我的打包命令
@echo off
::转到当前盘符
%~d0
::打开当前目录
cd %~dp0
set FLEX_SDK="D:\Program Files (x86)\FlashDevelop\Tools\flexsdk\bin\adt.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>中包名的快速的定位:

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

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

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

 

本篇就到这了~下篇介绍原生代码的调试。

ANE接入平台心得记录(安卓)的更多相关文章

  1. Mesos+Zookeeper+Marathon的Docker管理平台部署记录(2)- 负载均衡marathon-lb

    之前介绍了Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)的操作,多余的废话不说了,下面接着说下在该集群环境下的负载均衡marathon-lb的部署过程: 默认情况 ...

  2. mytest3.py-api接入平台获取数据

    mytest3.py-api接入平台获取数据 import base64 import datetime import hashlib import urllib import urllib.pars ...

  3. Mesos, Marathon, Docker 平台部署记录

    Mesos, Marathon, Docker 平台部署记录 所有组件部署基于Ubuntu 14.04 x64 主机 IP 角色 master 192.168.1.3 Mesos Master, Ma ...

  4. 桥接模式(Bridge、Implementor)(具体不同平台日志记录,抽象与实现分离)

    桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化.它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式 ...

  5. KubeSphere单节点(all-in-one)平台搭建记录

    KubeSphere单节点(all-in-one)平台搭建记录 目录 KubeSphere单节点(all-in-one)平台搭建记录 一.主机准备 1.1 主机配置 1.2 环境准备 二.下载kube ...

  6. OpenHarmony3.0如何轻松连接华为云IoT设备接入平台?

    摘要:本文主要介绍基于OpenHarmony 3.0版本来对接华为云IoT设备接入IoTDA,以小熊派BearPi-HM_Nano开发板为例,使用huaweicloud_iot_link SDK对接华 ...

  7. Android游戏之平台接入的一点记录

    最近手头有需要接入多个渠道的工作,我负责的是Android方面的接入,一般来说,渠道是非常多的,每一个渠道调用的接口都不一致,如果每一个渠道都要自己去弄回非常的耗时,所以网上会有一些接入的中间件提供商 ...

  8. Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)

    随着"互联网+"时代的业务增长.变化速度及大规模计算的需求,廉价的.高可扩展的分布式x86集群已成为标准解决方案,如Google已经在几千万台服务器上部署分布式系统.Docker及 ...

  9. Unity3d与iOS交互开发——接入平台SDK必备技能

    原地址:http://www.2cto.com/kf/201401/273337.html# 前言废话:开发手机游戏都知道,你要接入各种平台的SDK.那就需要Unity3d与iOS中Objective ...

随机推荐

  1. arcgis server 下无法执行复杂的运算符

    1.Open the Administrator Directory and log in as a user with administrative permissions to the site. ...

  2. Navicat Premium11.0.20破解版快速安装配置(附文件)

    Navicat Premium是当下非常好用的数据库管理软件,但是价格非常昂贵,并且还有某些小bug,感觉3000+的人民币 与软件本身的价值还是不相称.下面是破解安装流程安装过程是在MAC 10.1 ...

  3. Quartz2D复习(一)--- 基础知识 / 绘制线段圆弧 / 图片水印 / 截图

    1.Quartz 2D是一个二维绘图引擎,同时支持ios和Mac系统: Quart2D的API是纯C语言的,API来自于Core  Graphics框架: 2.Quartz 2D可以绘制图形(线段/三 ...

  4. 网络热恋之json解析

    现在的app开发很少有用到XML解析的了,主流的则是JSON. // // ViewController.m // CX-JSON解析(三方JSONKit-master) #import " ...

  5. nginx 配置优化的几个参数(转)

    nginx配置文件里面需要注意的一些参数 worker_processes 8  nginx要开启的进程数 一般等于cpu的总核数 其实一般情况下开4个或8个就可 我开2个 以了 多了没有太多用每个n ...

  6. html的层叠次序---真没有想象的简单

    学习资料1: http://www.cnblogs.com/mind/archive/2012/04/01/2198995.html 学习资料2:http://www.cnblogs.com/weib ...

  7. git将代码提交到远程分支(非主分支)

    一个仓库可以包含多个分支,有一个默认的主分支:master 若想提交代码至远程仓库的某个分支(非主分支) 先查看下本地分支以及远程分支:git branch -a 由本地分支(非主分支master)提 ...

  8. [css]我要用css画幅画(一)

    几年前开始就一直想用css画幅画. 今天才真正开始, 从简单的开始. 作为一个工作压力那么大的程序员,我首先要画一个太阳. html如下: <!DOCTYPE html> <html ...

  9. Asp.net MVC的Model Binder工作流程以及扩展方法(3) - DefaultModelBinder

    Default Binder是MVC中的清道夫,把守着Model Binder中的最后一道防线.如果我们没有使用Custom Model Binder等特殊处理,那么Model的绑定都是有Defaul ...

  10. C# Async Await 注意事项

    Avoid Using Async Void  --- 避免使用async void async void 只能用于事件处理函数.并且保证永远不在用户代码中调用这些事件处理函数. async void ...