ANE的用途及android平台需注意的地方

flash是跨平台的,虽然目前用flash开发手游的公司比较少,但是也是存在的。目前一般手游用cocos2dx的比较多,3d手游一般都用unity3d。以前做webgame的公司转型做手游后,技术转型也是一个问题,所以基本都会能采用现有的技术体系就采用,不会硬是转型用主流。以前做webgame,使用flash还是非常多的,所以转型手游后也基本会用flash开发手游,也不会有什么问题,除了极少数的机型兼容性问题外,基本没别的问题,都说flash的性能差,但是做一般性的、不是很复杂的游戏足够了,不会因性能问题产生什么问题。手游经常要和第三方平台合作,所以一般也需要接第三方平台提供的sdk,sdk功能一般都是登录、注册、支付,再加上一些其他的统计。flash开发的手游可以分别打包成apk和ipa运行于Android和IOS,在接SDK时需要分别接Android和IOS的SDK,都是通过ANE来完成的。

ANE是Adobe Air Native Extension的缩写,即Air的本地扩展,flash中as3不能直接调用系统平台本地的接口和方法,ANE的作用可以理解为是flash as3和本地系统接口方法的一个桥梁,通过ANE封装一些调用本地接口的方法,然后在as3中再调用ANE中的接口方法,来达到调用本地接口方法的目的。

在这里讲不详细说明开发ane的具体代码和过程,只是对ANE作一个简单的说明,可以快速了解ANE是什么,有什么用,以及需要注意的地方。

下面是我在开发android ane过程中遇到的一些问题:

1、海外平台方一般提供的sdk有2个工程:平台方自己的sdk和facebook sdk(或google play service sdk),有经验的平台方自己的sdk中是动态获取资源,不是通过R.xx.xx来获取的,这样我们就不需要在ane中去处理资源的映射了;但是facebook sdk或google play service sdk都是通过R.xx.xx来获取资源的,我们需要在ane中手动将资源重新映射一遍,否则打成ane包(*.ane)后放到flash工程中会因找不到资源而导致无法将flash工程无法打包,找不到资源的原因是flash
mobile项目打包时会自动生成一个以air.xx.xxx....开头的包名。具体映射资源的方法这里简单说下:

  • 可以先将facebook或google play service sdk的jar包拷贝的自己的ane android工程下,然后查看facebook或google play service sdk中R文件所在包名,在自己的ane android工程的src包下创建一个一致的包名,将R文件拷贝到该包目录下,将R.java中的final修饰符去掉,这样才能修改R中的值,将R中所有的资源ID全部重新赋值即可。通过FREContext.getResouceId("xx.xx"),具体怎么搞可以baidu下。
  • 有的sdk中包含.so文件,需要将.so文件按照官方说明放到指定目录下就行了,但是我遇到了一个奇怪的问题,加入.so文件后打成*.ane,再将ane引用到flash工程中打成apk包无法安装,我们需要找一个签名工具将apk重新签名就好了,具体原因不详,可能有别的方法解决,但是我最终是通过重新签名成功的。
  • 海外平台方一般提供的sdk有2个android工程,我们需要手动将这2个工程的资源文件合并成一个,最后将合并后的res文件夹放到指定目录下来生成ane,一般就是重名文件如strings.xml这样的文件就需要手动合并内容,其他的非重名文件可以直接拷贝。

android ane就这些吧,搞定这些基本就没什么问题了。ios ane要简单的多,我没做过ios ane,但是同事们只要照葫芦画瓢基本都做出来了,但是做android ane时照葫芦画瓢会让你获得意想不到的Error,反正我是折腾了很久,做android ane时。

之后有时间会将android ane的具体步骤详细的记录下来,可能N年以后还会接触呢。不过我相信adobe flash也会慢慢解决开发ane繁琐复杂的情况的,到时候可能做ane就不会有那么多的坑爹坑娘坑全家的各种莫名其妙的问题了。

时间: 2024-10-08 07:14:13

ANE的用途及android平台需注意的地方的相关文章

Cocos2d-3x:vs2012项目转为android项目需注意的地方

http://www.cocoachina.com/bbs/read.php?tid=194668 先按照这个文章导入库到vs项目. 在vs项目的sceen类的里添加 #include "cocostudio\CocoStudio.h";记住是这个路径!!!#include "CocoStudio.h";这个路径在转换时会报错的. 在proj.android\jni的Android.mk里添加以下代码: #添加的东西 LOCAL_WHOLE_STATIC_LIBRA

Android平台上关于IM的实践总结

前言 IM通信在互联网发展到现在已经是码农的世界里人尽皆知的技术,特别在当下移动互联网迅猛发展的时代这种技术的开发也更加火热,其中老牌的代表作就有QQ和MSN,和最近新崛起的微信,默默,易信,来往等眼花缭乱的各种应用都把IM技术应用其中.我是Android开发人员,写这篇文章主要原因也是因为我自己从事开发以来主要做过的几款APP都是包含着IM通信,在不断的摸爬滚打的解决问题的过程中,积累了一些经验记录便将其记录到博客中作为自己一个阶段性的总结,也可以分享其他需要的开发者,作为一种参考实践的方案,

【Android平台中的安全编程】の #00-不要在外部存储(SD卡)中存放未加密的敏感信息

本文翻译自https://www.securecoding.cert.org/confluence/display/java/DRD00-J.+Do+not+store+sensitive+information+on+external+storage+%28SD+card%29+unless+encrypted+first,有增删改. Android提供了几种保存持久化应用数据的选择,其中之一就是外部存储(/sdcard, /mnt/sdcard).外部存储包括设备内部的微型或标准大小的SD卡

(转) Android平台上关于IM的实践总结

前言 IM通信在互联网发展到现在已经是码农的世界里人尽皆知的技术,特别在当下移动互联网迅猛发展的时代这种技术的开发也更加火热,其中老牌的代表作就有QQ和MSN,和最近新崛起的微信,默默,易信,来往等眼花缭乱的各种应用都把IM技术应用其中.我是Android开发人员,写这篇文章主要原因也是因为我自己从事开发以来主要做过的几款APP都是包含着IM通信,在不断的摸爬滚打的解决问题的过程中,积累了一些经验记录便将其记录到博客中作为自己一个阶段性的总结,也可以分享其他需要的开发者,作为一种参考实践的方案,

基于Android平台的i-jetty网站智能农业监控系统

基于android平台i-jetty网站的智能农业监控系统 摘要:传统的监控系统,一般是基于PC的有线通信传输,其有很多不足之处,如功耗较高.布线成本高.难度大,适应性差,可扩展性不强,增加新的通信线路需要再次布线施工,而且维护起来也比较麻烦,一旦线路出问题,需要繁琐的检查.而嵌入式Web监控系统是基于物联网技术,其无线通信技术具有成本低廉.适应性强.扩展性强.信息安全.使用维护简单等优点. 智能农业中,种植大棚是通过大棚内安装温湿度以及光照传感器,来对农作物的环境参数进行实时采集,由Web监控

Unity3D在Android平台使用嵌入式数据库Sqlite,解决无法找到数据库文件的问题

做一个需要嵌入式数据库Sqlite 的unity3d项目,在pc机上运行良好,需要发布到Android平台上,于是,各种坑爹...会遇到找不到数据库文件的问题.当在pc机上使用sqlite时,当执行SqliteConnection dbConnection = new SqliteConnection("data source = test.db");语句时,如果有这个数据库文件则建立连接,如果没有则创建出这个文件,然后建立连接.当在Android平台上时,扯淡的事情就开始了,总之便不

(转)android平台phonegap框架实现原理

(原文)http://blog.csdn.net/wuruixn/article/details/7405175 android平台phonegap框架实现原理 分类: Android2012-03-28 23:10 2919人阅读 评论(0) 收藏 举报 phonegap平台android框架apiblackberry 最近研究了下phonegap手机快速开发框架原理,重点探究了android平台上的phonegap框架源码,在参考cutesource写的phonegap源码分析后,更加深入理

Android平台,利用zxing库开发扫码功能

Android平台下利用zxing实现二维码开发 现在走在大街小巷都能看到二维码,而且最近由于项目需要,所以研究了下二维码开发的东西,开源的二维码扫描库主要有zxing和zbar,zbar在iPos平台上应用比较成熟,而在Android平台上主流还是用zxing库,因此这里主要讲述如何利用zxing进行二维码开发. 1.如何将zxing的Android源码导入工程. 在导入zxing的android源码之前,先去官方下载zxing的源码:http://code.google.com/p/zxin

iOS 混合应用的关键点分析 - 仿 Android 平台 WebView 可注入本地对象方法的功能实现要点

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 对于 iOS 和 Android 平台来说,各自的流畅览器组件 UIWebView 和 WebView 都可以很容易地在本地代码中调用 WebVi