[AIR for Android]彻底解决UC悬浮与AIR项目的兼容性

关于UC的ANE我已经改动很多次了。为了适应Starling的GPU渲染项目(-app.xml中的direct),从登录界面的横竖屏到支付界面的消失 再到悬浮的BUG 一路过来总是那么苛刻。前几天发版本,UC审核人员又把悬浮的问题拿出来说,忍无可忍,没办法只好再次对UC ANE进行修改。这次改动后,悬浮BUG会彻底解决。首先把在接UC SDK过程中遇到的问题先复述一遍:

UC 与AIR项目兼容性BUG

  1. 支付界面竖屏 在横屏的starling项目的时候点击支付会闪退。解决方式是把全部UC界面换成横屏:传送门
  2. 上面这种方式被官方人员彻底否决 于是又有了一种解决方式:传送门
  3. 点击悬浮打开随便一个SDK界面  按下home之后游戏context会丢失,屏幕黑屏(再次按下home再次打开恢复)。解决方式:是 把在flash做悬浮 并固定,把悬浮的回调函数切换到调用个人账户中心 同样需要中转activity;
  4. 阉割版本的flash悬浮图标UC官方无法接受 必须把悬浮恢复原样。这个问题正是本文要讨论的。并解决【3】所描述的BUG;

把悬浮中插入自定义activity的实现

关于UC悬浮与Starling项目的兼容性BUG重现:

限定环境:AIR+Starling+横屏

  • 点击悬浮 随意点进去一个SDK界面 例如 【礼包】;
  • 按下【home】物理键;
  • 再打开AIR应用程序  发现黑屏 游戏界面已消失;
  • 再次按下【home】;
  • 再次打开AIR应用程序 游戏界面恢复;

继续阅读“[AIR for Android]彻底解决UC悬浮与AIR项目的兼容性”

[PlatformANEs]更新支付宝ANE(for IOS for android)

一直就有朋友问我手上有没支付宝的ANE,假期末几天有点空余,于是就update了….

支付宝本身提供了内支付的SDK,只是相比于其他的SDK支付更加简明而要

没有悬浮等一大堆干扰游戏的玩意儿,接支付宝SDK真是一个明智的选择.

PS:写的ANE for IOS 并不多,目前不太确定是否有问题.若要用还是需要根据自身情况而改动.

(可任意转载传播 但请注明出处)

2013-10-5

  • 更新支付宝无线支付ANE
  • for IOS   支持IOS端(ios 6以上 )
  • for android 支持android端(android 2.2以上)
  • 支付宝(Alipay)SDK下载地址:传送门
  • 项目:platformANE
  • Github地址:传送门

[AIR for IOS]适应AIR的开发者证书申请流程

项目最近在准备IOS版。而我正被派去探路。首先对于IOS版之前一直都是用别人分享的 现在刚刚拿到开发者帐号(神马效率。。申请了那么久)

于是请教朋友 一个下午的时间终于搞完了。现在把步骤写下来记录下。

申请苹果开发者帐号

  • 这里有一篇非常详细的教程,传送门

申请配置适应AIR开发的KEY

进行下面的步骤确保您已经拿到了开发者帐号。

  • 创建 正式版证书/development证书
  • 登录开发者后台创建.certSigningRequest文件
  • 导出成p12文件
  • 创建一个应用的id
  • 添加设备, 用来指定开发版和限制分发版可以安装的机器
  • 创建.mobileprovision文件

[AIR for Android]AIR项目个人技术总结

(提示:以下观点仅仅代表我现在的个人,有谬误请指出)

项目详情

游戏类型

  • ARPG 仙侠类大型多人在线手游,目前android版本已上线 IOS版随后跟进,虽然IOS版本即将上 但是到现在能说的东西很多 所以尽量把想说的写出来。一来是备忘 二来是分享  其实主要是备忘 我是一个健忘症患者。

项目框架和开源技术等

  • AIR+STARLING+FEATHERS+ALCHEMY

ANE本地拓展的使用

  • 除了zrong的部分功能之外 我个人还加了很多小功能大功能,例如原生解压 项目重启 等。ANE是AIR项目中很大的一个技术点。可以说仅此于素材处理 网络处理 内存优化
  • 素材处理 网络优化 内存优化 本地拓展 是我认为在一个AIR移动项目中比较主要的技术难点,当然仅仅是目前我的经验来下的偏论,而我在项目中参与比较多的其实 只是 素材处理 和 本地拓展(ANE).

素材处理和工具使用

  • TEXTUREPACKER,ATFTool,后面是自己写的 图片压缩工具 割图工具  打包工具 纹理批量处理工具  等(工具和效率挂钩 在这过程中我深深的认识到这一点)

继续阅读“[AIR for Android]AIR项目个人技术总结”

[AIR接入Android 平台]特别篇-合并jar和调用.so文件的特别补充

这篇文章是对前面系列文章的补充。传送门

也是我最近遇到的几个小问题。称不上有什么技术难点。但是很值得推敲。

A.合并Jar。对于混淆比较严重的jar源码包来说,例如银联的。

会出现类似一下的源码文件。这种文件若解压出来 在一些系统(例如WIN系)的会删掉掉一个。

因为在Win系的系统里面文件名不分大小写。遇到这种包的合并若不小心打包ANE后就会报ClassNoFound错误。
继续阅读“[AIR接入Android 平台]特别篇-合并jar和调用.so文件的特别补充”

[程序人生]我们是否多改变

最近看到几篇业内感悟文章:加班与效率工具与效率(github做博客也是一种非常赞的style嘛。)。昨天也收到了关注很久的一个业内同行的事情结局。再回想过来作为一个程序员已经过了那么多日子了。从一开始一个月只能写一个界面 到 现在三天必须重构一个模块。

一路走来总觉得现实推动我多过于我推动梦想。
继续阅读“[程序人生]我们是否多改变”

[AIR FOR ANDROID ]XML配置出现中文的BUG

BUG引发:在-app.xml中 例如:

[code lang=”java”]
<meta-data
android:name="gfan_pay_appkey"
android:value="325077622" />
<meta-data
android:name="gfan_cpid"
android:value="中文" />
[/code]

出现中文的话 则会报错例如:

[code lang=”java”]
AndroidManifest.xml: ERROR Error: No resource found that matches the given name (at ‘value’ with value ‘????’).
[/code]

的错误。
把中文改为英文则正常。
解决方式
显然AIRSDK也是基于全英文的 没考虑全编码问题。只要修改打包工具ADT 加入编码识别就OK了。这种方法应该是可行的。可是当我想到的时候又已经不需要配置中文了。

使用TexturePacker批量生成SpriteSheet

使用TexturePacker大概有半年了。一直都觉得这个工具非常好,非常感谢作者送的key。

关于这款工具一直恬不知耻的用着,遇到小白问题还去请教了作者,作者也是一个非常热心的人 再细微的问题都会耐心的回复。即使我E文水平是那么的渣。

之前作者建议我在我的博客上写一篇我使用texturePacker的感悟。一直没有动笔 真是非常遗憾。这次一定补上。

首先有一篇非常经典的参数设置教程:传送门

另外一篇比较中规中矩的中文教程:传送门

研究了几天  发现texturePacker在 MAC OS  和 XP下都可以使用命令行。但是与编辑器集成倒是只有MAC  MAC版本的集成了XCODE。

既然可以使用命令行 那就好办了 可以实现批量生成纹理集。

前提

使用我写的这个工具默认texturePacker已经是正版。(texturePacker可以使用博客去申请KEY  作者也是非常友好的。建议使用正版。)
继续阅读“使用TexturePacker批量生成SpriteSheet”

[接入android平台] 彻底解决按[home]切掉SDK界面的问题

关于这个BUG的描述和之前的解决方式:传送门

概述

之前的解决方式是用apktool反编译 修改XML,但是这种方式繁琐并且容易出错,

由于手游很多很多的小渠道。经常要出几百 甚至上千个APK。不可能去反编译那么多个包的。

而且ADT对apk的签名是用.p12文件 反编译修改会改变签名。

我之前就是由于签名错误导致玩家无法更新新版本的应用。

这BUG会引发:

1.例如在支付界面的时候 按home跳出桌面 再返回 则支付界面消失(看支付宝验证短信需要跳出桌面)

2.如果是GPU加速模式的话  会丢3D加速环境

终极解决方式

1.之前传送门所说的 用apktool反编译 修改XML的launchMode  但是这种方式 太繁琐 不适合批量出包的项目,我隔壁的项目组就每天要出500个包的。一个一个去反编译修改  这要到那一天。

2.使用我修改过的adt.jar替换 FBSDK下的 例如我的是替换:

D:\FB\Adobe Flash Builder 4.6\sdks\AIR3.5\lib\adt.jar

至于ADT.jar的修改教程。  这个技术已经不在这篇文章所在的范畴了。

下载地址

[AIR for Android]按下[home]键 返回后切掉 SDK activity的解决方式

BUG描述

1.项目在打开SDK 登录 或者支付 论坛 个人中心等界面之后

2.按下 home 键

3.重新打开应用 SDK界面会消失

引发原因

这是由于游戏主Activiry的launchMode 和 SDK 的activity的launchMode 有冲突引发的,AIR项目的主activity的launchMode是SingleTask  反编译后查看如下:

[code lang=”xml”]<activity
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:label="@string/app_name"
android:name=".AppEntry"
android:screenOrientation="landscape"
android:launchMode="singleTask"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="stateHidden|adjustResize">[/code]

而我们SDK的launchMode就由各个SDK客户端开发自己定义了。
关于android四种launchMode的详细情况请看 传送门
解决方式

1.反编译修改主activity的launchMode为默认  就是去掉;

2.修改SDK所有activity的launchMode为 SingleTask;

注意:这种方法并不适用与全部SDK,具体还需要看SDK的情况。我正寻找更简单的解决方式。