AIR项目个人技术总结(完结)

之前


在九月份的时候我对自己参与的项目做了一次粗浅的总结:传送门,到了四个月后的现在,这个项目我能参与的部分应该只剩接渠道的时候写ANE(前后端)和更新版本的时候负责出所有渠道的版本,关于我的第一个项目的所有模块几乎都已经转给其他同事了,而项目新版本的开发我也完全没有参与了,在这项目最后的这几个月也让我对AIR这个跨平台"引擎"又有了新的认识.在前一个月多的时间里我把AIR仔细分析了一遍,对于跨平台的认知感觉和之前又有了区别,我们总是抱怨在现有的环境下学不到东西,很多道友在抱怨每天写同样的if-elseif-else逻辑枯燥无比,其实很多时候你换几个视角看东西会让你获益匪浅.

 

之一


对于我参与的这个AIR项目,我虽然并没有在项目中参与运营,但是这个项目从无到有,再到上平台,到第一个玩家付费,到第一个单笔10K的大R出现,每一个让团队激动的时刻 我都算见证了,这个项目从无到上线总共经历了207天的时间(6~7个月左右,以前可能只听到网上分析或者预估的时间,但是这个时间是我从写的第一句代码到上平台开服的那一天的准确时间.)

继续阅读“AIR项目个人技术总结(完结)”

解密ADT第二篇-编译APK资源

前言

继前一篇介绍了android编译aapt的工具之后,可能会困惑我为什么会花一大篇文章去写一个工具怎么用,在这第二篇文章我就详细分析 ADT是怎么使用aapt来编译android资源的.

ADT编译资源

我们用原生语言java编写android程序的时候,我们仅仅需要负责编写代码 配置权限参数的工作,而编译资源 编译代码 打包apk 全部交给eclipse或者交给androidSDK的工具代劳,同样我们编写AIR for android程序也是如此 我们仅仅编写代码  其他工作都一般交给FB代劳,而FB又交给ADT代劳,而ADT则指挥android SDK的各种工具工作,这编译资源 便是 从 完成代码之后的第一步工作.下面我们看看ADT是如此操作aapt实现编译android资源的.

继续阅读“解密ADT第二篇-编译APK资源”

[PlatformANEs]更新中国移动游戏基地ANE( for android)

一直就有朋友问我手上有没中国游戏移动基地的ANE,假期末几天有点空余,于是就update了….

在写这个ANE的过程中我深深的感受到了他的奇葩.简直把技术用到了极致,中国移动基地的SDK开发客户端现在应该为自己写出那么艰苦卓绝,那么奇形怪状,那么神来之笔,那么旋风无极,那么宇宙超级无敌屌炸天的SDK而暗暗庆幸吧.

对于这个SDK的奇怪程度足以详细写一篇博客来细细阐述.

(PS:严重提醒适用这个ANE的AIR开发者,请从SDK文档 到 我写的README 每一字每一句都仔细阅读,特别是对于我写的README)

2013-11-10

  • 更新中国移动游戏基地ANE
  • for android 支持android端(android 2.2以上)
  • 项目:platformANE
  • Github地址:传送门

[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项目的兼容性”

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

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

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

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

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

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

[Air For Android]Direct渲染模式与调用第三方插件BUG(已解决)

BUG重现环境:

1.应用开启GPU渲染模式 既是在XML中加入参数:<renderMode>direct</renderMode>

一般starling或者其他stage3D环境都必须开启此渲染模式;

2.应用调用第三方插件 例如支付宝插件 银联插件(我使用的是ANE调用)

描述:

在运行应用的时候 调用ANE 调用支付宝或者银联插件付费。付费完成或者付费取消 返回AIR环境的时候 引发;

现象:

手机黑屏  在退出到桌面再进去AIR应用的时候 恢复正常。

图片解释过程:

A。这里调用第三方插件 银联


继续阅读“[Air For Android]Direct渲染模式与调用第三方插件BUG(已解决)”

[Air For Android Of ANE]运营商登录付费接入ANE打包心得

前缀:

关于什么是ANE,如果您都能搜索到这篇文章的话  相信已经不用我过多介绍了。但是还是会发一篇基础教程:点我传送

项目进行到了接入运营商的阶段。而国内除了91等几家声名显赫的运营商会提供已经做好的ANE给ADOBE 的移动开发者之外。其他的运营商一般只会提供IOS封装库 或者是Android 的JAR 封装库。这对于Air For Android 开发的移动应用来说。接入这些运营商就需要应用开发者自己实现ANE。

这几天一直在做android运营商的接入。这里就先把这几天的心得先发上来。大概下一次就会把Air For IOS Of ANE 的心得一并发在这里。

针对Android的ANE打包:

配置JAVA android开发环境 配置各自系统变量等略过。

首先说说我这次拿到运营商提供的JAR库的结构。(如果你拿到的SDK组成和我这次的大同小异,那你可以看完省很多弯路  如果你拿到的SDK比我拿到的复杂 那你仅仅可以参考其中的一些资源打包等方法。很多情况还是有不同的)

我这次运营商提供的有 :

A.JAR库文件一个;

B.还有布局文件库(res文件夹下的一堆UI布局文件);

C.原生android写的DEMO一个;

D.开发文档若干;
继续阅读“[Air For Android Of ANE]运营商登录付费接入ANE打包心得”

[AGAL个人笔记]第六篇:重新组织矩阵

翻译这套教程拖了两月了,最近的确散漫了一点,还经常用工作忙而当借口去说服自己,其实这样下去不好。当意识过来的时候发现已经三月份了。

最近越来越意识到做事情不能给自己挖坟。事情应该有始有终。

每天都干一两件自己想干但是又怕累的事情。(今年原文博客已被墙

原文:Stage3D / AGAL from scratch. Part VI – Organise your Matrices

eg.如果你E文不错的话  还是看E文比较带劲。本人E文非常烂,若有偏差请指出。

重新组织矩阵:

在前面的教程中,我们使用了矩阵在GPU上绘制三角形,

我的翻墙软件被封了。。哎 看来要停一停了又

[AGAL个人笔记]第五篇:片段(索引 Indexes )和淘汰模式(译)

原文:Stage3D / AGAL from scratch. Part V – Indexes and culling mode

eg.如果你E文不错的话  还是看E文比较带劲。本人E文非常烂,若有偏差请指出。

索引用于什么地方?

在前面的文章中,介绍了索引 和索引缓冲,我把索引缓冲比喻成连线游戏中的数字,在屏幕上渲染图形的时候,显卡需要知道如何画三角形

例如有8个顶点,想象成构建一个8个顶点的立方体,如果仅仅是给出8个顶点数据,而没有进一步的指令编码,那显卡根本不知道你想画啥

可能你想渲染出一个封闭的四方盒子,但也许你是想画一个开盖的四方盒子,有也许你想打开四方盒子中的两面。。。

索引就是你想 根据顶点画图形的步骤  或者说是顺序,绘画方案 总之一个意思。索引告诉显卡怎么在顶点上画画 顶点告诉显卡在那里画画。就是这样~

在渲染三角形的过程中 可能会用到同一个顶点多次,无论在显卡中渲染什么图形,索引缓冲的长度(并非顶点)的都必须是3的倍数,因为我们能渲染的最简单的物品是三角形嘛。。然后其他全部都由一个一个三角形组成。
继续阅读“[AGAL个人笔记]第五篇:片段(索引 Indexes )和淘汰模式(译)”

[AGAL个人笔记]第四篇:加入深度(译,Z轴也叫深度坐标)

原文:Stage3D / AGAL from scratch. Part IV – Adding some depth

eg.如果你E文不错的话  还是看E文比较带劲。本人E文非常烂,若有偏差请指出。

关于Z轴的解释(角度理解)

Stage3D,我认为这是3D的技术,但是为什么我们在上一节并没有用到Z轴坐标呢?如果你在上一节我分析代码的时候也跟着下载源码来编译,并且尝试修改其中的坐标看效果的话,你就会发现  没用(X,Y,Z,r,g,b)顶点中的Z数值,Z轴有何作用呢,下面我将解释。

——3D场景在2D中渲染,渲染出的区域叫做Clipspace(这个应该翻译为锥体裁剪之后的空间,还是投影变换后的空间?),CLIPSPACE(剪切空间)是屏幕的基础,屏幕上的每一个点 都会被映射到CLIPSPACE(剪切空间),然后才能被显示出来。(这个CLIPSPACE(剪切空间)就是这么一个东西   不理解没关系 如果要深入理解麻烦去找本计算机图形学)。

——之前说的屏幕坐标(X,Y,Z)每一个数值都是在闭区间[-1,1]其实表述并不完全正确,更准确的解释是,X,Y,Z 只有在闭区间[-1,1]的时候  才能映射在CLIPSPACE(剪切空间)上(也就是说 你所能看到的程序窗口大小 即为CLIPSPACE有效大小,所以我在之前也加了解释,坐标的有效数值是[-1,1],坐标可以取任何值)。
继续阅读“[AGAL个人笔记]第四篇:加入深度(译,Z轴也叫深度坐标)”