AIR 15.0 提交 AppStore 错误 ERROR ITMS-9000: Invalid Segment Alignment

AIR 15.0 提交 AppStore 错误 ERROR ITMS-9000: Invalid Segment Alignment

上周提交到 AppStore 的 IPA 被拒了,其中的主要错误如下:

ITC.apps.assetvalidation.PURPLE_EXECUTABLE_OUT_OF_ALIGNMENT.error.message

我联想到有可能是因为 iOS8 支持的原因,于是在 labs.adobe.com 下载了 2014-09-24 日发布的 AIR 15.0.289 beta 版重新打包,但在提交到 AppStore 的时候收到这样的错误提示:

ERROR ITMS-9000: “Invalid Segment Alignment. This app does not have proper segment alignment and should be rebuilt with the latest version of Xcode. Please contact Developer Technical Support if you need further assistance.”

这消息看起来和上次被拒的原因一致。我可以确定是 iOS8 的原因了。最可能的情况是 Apple 要求新提审的包必须加入 iOS8 的相关字段,而 Adobe AIR SDK 的编译器没有提供这些字段。

在 Google 上搜了一通,发现不少人碰到这个问题,只是没有解决方案。 继续阅读

IBM developerWorks 线程文章汇总

IBM developerWorks 线程文章汇总

最早我在 POSIX線程(pthread)入門文章分享 看到了关于 IBM developerWorks 中线程文章的一些汇总。但是按照该文中提供的链接一一找去,发现均不能访问。

原来 IBM developerWorks 对目录结构进行了修改,因此原来的链接就都作废了。

由于找不到 IBM developerWorks 中的相关汇总页面,我就人肉汇总了一次。

原文中只有 C 和 C++ 部分的内容,我又加入了 Python 和 HTML5 的内容。

下文的繁体字内容来自 POSIX線程(pthread)入門文章分享继续阅读

HTML5入门指南

两天前,Robert Mening 给我发来邮件,告知我 [转]30余款HTML工具和教程 一文中的 EchoEcho.com 网站的内容太老,希望我能更新,并加入他的 HTML5 Beginner’s Guide

HTML5 Beginner’s Guide 的设计简洁,内容也是完全针对新手,有兴趣从头学习 HTML5 的话,可以根据他的教程对 HTML5 进行初步了解。

Robert 是个挺有趣的人,他在 About 页面中写道许多人在他的网站上线后给他发邮件,要他帮忙做网站,然后他委婉地拒绝了( I don’t have THAT much time to set it up for YOU)。这是意料之中的事,就和我在 一个项目开源到底有哪些考虑? 中说的一样,总有人想把你当免费劳力使唤,此事中外亦同。

Robert 提到的文章是六年前发布的,虽然我经常对旧文进行修改,但那篇文章是转载的,为了尊重原作者,我决定依然保留原文内容。

各视频站做到自动切换flash和html5播放器的难度有多大?

各视频站做到自动切换flash和html5播放器的难度有多大?

The difficulty of change video player from flash to html5.

这是一个知乎上的回答,原文在这里:http://www.zhihu.com/question/25259832/answer/30319472

问:

  1. 做到根据操作系统、浏览器或者用户自定义来使用不同的播放器是否有难度?
  2. 如果有难度,问题点在哪里?
  3. 如果不算难,为什么不做?

答:

判断操作系统和浏览器种类和版本,这个不难。

目前的主流平台一共5个:

桌面平台:

  • Windows(完美支持H5和 Flash Player)
  • Mac OS X(完美支持 H5和 Flash Player)
  • Linux(支持 H5,Flash Player支持到11.2,Chrome对 Flash Player 支持更好)

移动平台:

  • Android(支持 H5,Adobe已经放弃Flash Player支持)
  • iOS(支持 H5, 不支持 Flash Player)

继续阅读

在 iOS 7 中获取唯一标识符(UDID/UUID)

在 iOS 7 中获取唯一标识符(UDID/UUID)

Get unique identifer in iOS 7

在 iOS 5 中, 可以获取到系统的 UDID(Unique Device Identifier) ,后来被 Apple 禁止掉了。

于是,在 iOS 6 中,大家开始使用 MAC 地址 MAC(Medium/Media Access Control) ,后来又被 Apple 禁止掉了。

同样的,OpenUDID 也不能用了:

在 iOS 7 中,Apple 推荐使用广告标识符 advertisingIdentifier 来获取系统的唯一标识符。但是,用户如果重置了系统,广告标识符会重新生成。这就达不到 “唯一标识符” 的作用。

于是,在 iOS 7 中,程序员们发明了 “钥匙串保存” 方法,将这个唯一标识符保存在钥匙串中,安装了 App 后读取这个标识符即可。参见这里:ios 利用钥匙串保存密码和获取密码Simple iPhone Keychain Access

更详细的操作,可以参考这篇:如何使用KeyChain保存和获取UDID

下面这篇文章非常详细地介绍了 iOS 上获取唯一标识符的所有方式,以及相关知识,为了避免这么优秀的文章以后消失掉,我将其全文转载如下(已经很少全文转载了……)。 继续阅读

我们是否还应该支持 iOS 5?

我们是否还应该支持 iOS 5?

Must we support iOS 5 now?

游戏准备上线,纠结于一个API的支持问题。这个 API 从 iOS 6 开始支持。

那么,我们的游戏是否还要支持 iOS 5?

寻找了一些资料:

从腾讯的报告中可以看到,在2013年7月,iOS 6的占有率已经高达77%。

从今天 apple 的官方数据来看,iOS 7 的占用率已经达到91%,iOS 6 是8%,剩下的版本只有可怜的 1%。

iOS 占有率

As measured by the App Store during a 7‑day period ending August 24, 2014.

看来答案已经很清晰了。

Flash air 开发iOS游戏在苹果上架,能否热更新?

Flash air 开发iOS游戏在苹果上架,能否热更新?

这是我在知乎上的一个回答。原文地址:
http://www.zhihu.com/question/24847013/answer/29263899

我曾经多次被问到过这个问题。正好整理一下思路,免得以后忘了。

问:

游戏已经上架,以前的更新方案在苹果更新后,发现更新下来的swf不能正常读入,导致游戏无法进入。不知各位大神有没有什么方法解决。

答:

目前,在移动平台上想利用SWF热更新,只有 Android 能做到。 继续阅读

Python3 的异常处理

Python3 的异常处理

Exception in Python3.

Python3 的异常处理,在官方文档的 tutorial 中有说明。

这里把常用的异常处理方法都列出来,方便平时查找。

捕获异常基类

Python3 要求我们的异常必须继承 Exception 类。Built-in 的所有异常也都是继承自这个类。因此,我们只需要捕获这个类的实例,就可以捕获所有的异常。

继续阅读

删除 lua.ByteArray 中与 Long 相关的方法

删除 lua.ByteArray 中与 Long 相关的方法

Delete some methods about Long in lua.ByteArray.

用lua实现ByteArray和ByteArrayVarint 一文中,我介绍了用 lua+lpack+BitOp 实现的 ByteArray 模块,这个模块模仿 AS3 的ByteArray,给从Flash转到quick-cocos2d-x的程序员以亲切感。

这个模块被网友们找出了一些BUG,例如 这个这个这个 ,和 这个

今天,我将这些网友提出的问题一一做了确认和测试,发现有些并非BUG,而是理解有偏差。

但有个不是BUG的问题却可能造成重大的错误,那就是: 继续阅读

在 quick-cocos2d-x 中使用 DragonBonesCPP

在 quick-cocos2d-x 中使用 DragonBonesCPP

Using DragonBonesCPP in quick-cocos2d-x.

2014-07-31更新:三件事已经全部搞定,DragonBonesCPP已经推送到了quick-cocos2d-x 官方库。


1 前言

DragonBones 官方C++版本 for cocos2d-x 这篇文章中,我已经简单地介绍过了 DragonBonesCPP 这套用于取代 CCArmature 的库。

在我自己修改的 quick-cocos2d-x 版本中,我已经把 CCArmature 库删除,完全使用 DragonBonesCPP 。

我们的产品也完全使用 Flash 和 DragonBonesCPP 来制作骨骼动画。所有AS3版本的DragonBones提供的功能,在CPP版本中都能完整地实现。

几个月之前,我就已经将 DragonBonesCPP 整合到了quick-cocos2d-x 中,只是一直没有向官方库推送PR。这也是因为有几个内存泄露的BUG还没有解决。

现在,我终于有时间可以来做这件事。我的计划如下:

  1. 写一篇关于 DragonBonesCPP 的教程(quick专用哦);
  2. 解决 DragonBonesCPP 的遗留问题,并进一步封装lua api方便使用;
  3. 将 DragonBonesCPP 推送到quick的官方仓库。

那么,这篇文章就是第一件事了。 继续阅读

可能是一个程序员