首页 > 代码库 > Ane技术大全

Ane技术大全

 

一.Ane概况

1.Ane是什么?

Ane是为了解决 as3(flash)与Java代码通信的问题。跟 android与c++之间互通,需要JNI;android与html5之间互通需要javascript等一样的道理。本质是 as3 与java 之间的接口。

目前,用的比较多情景是:flash手机游戏需要在android平台渠道上发布,需要接很多渠道的SDK,而这些SDK主要是android原生写的。所以,需要开发者自己编写Ane去调用android代码。IOS越狱平台,也是同样的道理。

2.Ane组成部分

包括2部分:as部分和Java部分。

实质上,就是 as定义好接口,然后Java部分实现接口的功能。需要说明的是:as定义的接口和Java声明的接口是一一对应的,这样才能保证as接口能够调到Java的代码。最后,把as代码和java代码用打包工具,打成一个xx.xx.xx.ane的压缩包。As工程就可以把.ane 导入,直接调用as部分已经定义好接口。

3.Ane具体打包过程

可见:网络资源,网上很多,这里不作描述。

二.疑难问题

        这是本文章的重点。下面这些问题,都是个人经过制作国内及国外几十家渠道平台的SDK Ane总结出来的,绝对真实可用。

1.     资源打包问题

  • Res资源,很easy。全都放到 打包工具的 Android-ARM\res中。但需要注意的一点是:图片是标准的.9.png ,如果不是标准的,会提示错误:”No marked region found along edge “;  xx.xml布局文件中不能包含中文,中文都必须放到 string.xml中。
  • ·assets资源:应该放到As游戏工程的根目录下,与src目录同级。如果assets里面包含 xx.apk ,那么不会自动打进去的。等游戏apk出来之后,必须手动解包将xx.apk放进去,然后重新打包。
  • ·lib资源:主要是libs\armeabi  里面的xxx.so文件。这些文件,如果是放到 打包工具Android-ARM\libs\armeabi 目录下,也是打不进 .ane里面的。 必须放到 打包工具 Android-ARM\libs\armeabi-v7a 该目录下。
  • ·隐藏的资源:这里主要是针对 国外的一些渠道SDK jar包里面,会把资源放进去。 比如 xxx.jar 里面包含一个 assets 资源文件夹。那么必须要将 xxx.jar 包里面的 assets文件夹 解压出来,处理方法 跟 assets资源 一样。 如果您发现打出来的游戏apk包,在登录或者其他界面 显示少着一些按钮,背景之类的,那么就需要考虑 这个隐藏的资源问题。

 2.     apk调试

有的时候,必须要反编译 游戏apk ,修改AndroidManifest.xml 才可以正常运行。

  • ·apk的包名

         默认情况下,as打出来的apk,包名前面都加了一个 air.  。所以,对于那些绑定包名的SDK而言,就要修改 package 。比如微信分享、支付,QQ登录…

  • ·程序从后台回到前台,SDK页面消失了。

          这时候,应该考虑 配置文件的 android:launchMode="singleTask" 问题了。需要修改。把主activity的 android:launchMode="singleTask" 删掉,其他           的 activity 加上该配置。或者 执行相反操作。

  • ·版本号的问题

         如果某些SDK初始化错误,那么可能SDK里面用到了版本号的信息。也就是 android:versionCode="0"              android:versionName="@string/app_version"  。默认打出来的apk 包,配置文件是上面这样子的。 那就需要手动修改成:android:versionCode="1"    android:versionName="1.0"   版本号,游戏可以自己定义。建议,不管是否出错,都要修改版本号配置。

2.     activity生命周期

在android中,有的SDK 设计的时候,需要重写其生命周期的一些方法。比如 onActivityResult()等…解决方案:中间新建一个空的activity,然后,在空的activity去掉SDK的一些方法,这样就可以获取到了回调。在获取到回调信息之后,finish()该空activity。

3.     关于银联支付的坑

昨天,刚做了一个关于机锋SDK的Ane。碰到了一个大坑。。。调试了1天。。。

支付的时候,其余支付方式都正常,但银联支付就是出不来界面,而且程序崩溃。

最终解决方案:把android下面生成的demo.apk ,解包 将关于银联支付的 .smail程序代码类 都拷贝出来,手动替换掉 as游戏工程apk 解包之后的 .smial银联相关的支付文件,就ok了。。。

 

暂时,只想到这么多。如果各位大神,也遇到过坑,请帖评论。一起发扬此贴。