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中

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

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

时间: 2024-12-17 14:15:47

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

“小世界”项目心得记录(一)

背景: 最近准备做一个B2C的电商平台,一方面是想真正投入使用,一方面也是复习一下大学三年的学习成果,所以会以比较正规的软件开发方式进行开发,现在开始对此项目进行记录. (一)需求分析阶段: (1)此项目的建模工具不再使用之前使用的Visio.starUML,而是打算尝试使用IBM的Rational Software Architect和Sparx Systems的Enterprise Architect. (2)用例图:  参与者是与系统交互的对象,所以它不仅仅指使用系统的人:  用例的识别:

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

原地址:http://www.2cto.com/kf/201401/273337.html# 前言废话:开发手机游戏都知道,你要接入各种平台的SDK.那就需要Unity3d与iOS中Objective-C的函数有交互,所以你就需要用到如下内容: 一.Unity3d To iOS: 1.创建一个C#文件 SdkToIOS.cs 这是调用iOS函数的接口: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 public class SdkToIOS: Mo

“智&#183;商”商业技能大赛网站开发心得记录

"智·商"商业技能大赛官方网站开发心得记录 现在才来写这篇东西-不是因为忙,而是懒! 这个寒假接到了师弟的一个需求, 请我帮忙去做他们学院一个活动的官方网站,我大概了解之后就接下来了,于是我找了我基友跟我一起做这个网站. 需求是这样的: 竞赛介绍:介绍竞赛来源.历史.举办单位.本届情况等: 通知公告:主要为比赛公告等: 注意事项:关于比赛的注意事项. 队伍注册:在线注册队伍,以队伍为单位参加比赛: 试卷设置:添加试卷试题:包括设置答案以及分值: 在线答题:提供在线同时统一答题功能: 初

【学习记录】关于makefile而进行的互联网学习技巧练习及学习笔记和学习心得记录(vs2010)

我也不知道作为一个完全的windows平台下的不怎么专业的软件工程学生,看到<Accelerated C++>的源代码,第一反应是:哦!我应该用make生成工程文件.然后我愉快的用AOL开始搜索相关资料. 然并卵!我一定是被什么奇怪的生物附身了.我应该直接用vs创建项目->导入文件.然后……ctrl+F5.多么完美. 可是……以下: [教程]来自于云风大大的blog(云风的 BLOG) IDE 不是程序员的唯一选择(一) 以及后面的(二)(三)(四) 以及大大写了一篇半,只为了说明用cl

Unity接入自定义插件-调用安卓原生震动

前言:在网上看了好多接入安卓震动的例子,但是打包的时候总是会冲突,不是多个图标就是不能用等等,其实就是跟其他安卓插件冲突了.为了解决冲突问题,对于我这个安卓小白来说真是难啊,终于千辛万苦找到了一篇文章,解决了我这个问题. 看过文章后才知道继承了UnityPlayerActivity这个类后,两个只能显示一个,但是震动要用的方法只能在这个类中执行,所以就直接引用当前窗口. UnityPlayer.currentActivity.getSystemService(Context.VIBRATOR_S

前端框架Vue学习的心得记录(过渡&amp;动画)

目标:深入了解Vue框架(2.x版本)的组件 方法:通过看Vue的官方手册(Vue官方网站) 内容:本博客记录一些学习Vue中的心得,便于日后启发.(过渡&动画)(未完成,待继续) 注:遇到一些不懂的函数等,可以看官网的API参考. 正文; 一.概述 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果. 包括以下工具: 在 CSS 过渡和动画中自动应用 class 可以配合使用第三方 CSS 动画库,如 Animate.css 在过渡钩子函数中使用 JavaScript 直

前端框架Vue学习的心得记录(可复用性&amp;组合)

目标:深入了解Vue框架(2.x版本)的可复用性和组合 方法:通过看Vue的官方手册(Vue官方网站) 内容:本博客记录一些学习Vue中的心得,便于日后启发.(可复用性&组合)(未完成,待继续) 注:遇到一些不懂的函数等,可以看官网的API参考. 正文: 一.混入 二.自定义指令 三.渲染函数&JSX 四.插件 五.过滤器 原文地址:https://www.cnblogs.com/xinkuiwu/p/12011219.html

前端框架Vue学习的心得记录(工具)

目标:深入了解Vue框架(2.x版本)的工具 方法:通过看Vue的官方手册(Vue官方网站) 内容:本博客记录一些学习Vue中的心得,便于日后启发.(工具)(未完成,待继续) 注:遇到一些不懂的函数等,可以看官网的API参考. 正文: 一.单文件组件 二.单元测试 原文地址:https://www.cnblogs.com/xinkuiwu/p/12015020.html

基于eclipse-java的平台上搭建安卓开发环境

首先感谢好人的分享!http://www.mamicode.com/info-detail-516839.html 系统:windows 7 若想直接安装eclipse—android的,请启动如下传送门: http://www.eclipse.org/downloads/eclipse-packages/ 安装思路: 1.先安装ADT-23.0.6.zip-2通过Android SDK Manager添加新的软件包. 注意事项: 在添加Android SDK时候不要一次性勾选选择太多否则安装极