标签:android style c code java a
一.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. 资源打包问题
2. apk调试
有的时候,必须要反编译 游戏apk ,修改AndroidManifest.xml 才可以正常运行。
默认情况下,as打出来的apk,包名前面都加了一个 air. 。所以,对于那些绑定包名的SDK而言,就要修改 package 。比如微信分享、支付,QQ登录…
这时候,应该考虑 配置文件的 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了。。。
暂时,只想到这么多。如果各位大神,也遇到过坑,请帖评论。一起发扬此贴。
标签:android style c code java a
原文地址:http://www.cnblogs.com/codeAnimal/p/3746353.html