使用ANE整合Facebook

2013-04-02更新:加入Native Android App设置部分
2013-05-17更新:加入支持Android SDK3.0的项目介绍


如何在AIR编写的移动应用中整合Facebook?以下是我这两天的研究成果。

1. 如何阅读开发文档?

Facebook的开发文档很全,但对于一个时间紧、任务重、被Boss一天催10遍,急于实现整合的开发者来说,或许没有那么多时间去详细阅读所有文档。这里整理了一个顺序:

1.1 The Login Dialog

无论如何,登录是第一步。这篇文档不但介绍了关于登录的所有细节,也详细介绍了关于Permissions的用法。去吧:The Login Dialog 继续阅读 »

Non-PIE Binary in Adobe AIR

今天从韩国合作伙伴那里得知,几天前提审到AppStore的游戏得到了Apple的警告:

Dear developer,

We have discovered one or more issues with your recent delivery for “ì™€ë£¡ì „ê¸°”. Your delivery was successful, but you may wish to correct the following issues in your next delivery: Non-PIE Binary – The executable ‘AVOCIOS.app’ is not a Position Independent Executable. Please ensure that your build settings are configured to create PIE executables. If you would like to update your binary for this app, you can reject this binary from the Binary Details page in iTunes Connect. Note that rejecting your binary will remove your app from the review queue and the review process will start over from the beginning when you resubmit your binary.

Regards,

The App Store team

提审AppStore都N次了,这个Non-PIE Binary问题我从未碰到过。从Google搜到的消息,也都是从5月开始的。看来是Apple修改了政策。 继续阅读 »

Ant编译的jar文件,ANE不识别

问题描述

Android的ANE打包需要jar文件。Eclipse可以提供jar文件的导出。

然而,当我使用Ant来自动化完成ANE打包流程的时候,jar文件出了问题。

如果使用Ant生成的jar文件来打包ANE。那么ANE在使用的时候,会发生 ExtensionContext 无法初始化的情况。

也就是说,在调用 ExtensionContext.createExtensionContext(EXTENSION_ID) 的时候,得到的永远是null。

问题分析

以下是构建jar的target: 继续阅读 »

关于Adobe Creative Cloud的5个流言

在2013 Adobe MAX大会上,Adobe宣布升级CS套件为CC套件。而CC套件只租不卖。

CC套件的全称是 Creative Cloud,外界一直盛传CC套件只能在云上使用,或者必须每月付费。这篇文章解释了这些流言。

详见下文(英文):

http://terrywhite.com/5-myths-about-adobe-creative-cloud/

Adobe又杀掉了Fireworks

Adobe博客发布了名为The future of Adobe Fireworks的文章,描述了Adobe对Fireworks的态度。

所以,Fireworks被杀了。

Fireworks在Macromedia被收购的时候,就差点被杀掉。那次未遂。

我从设计转开发,从Fireworks 3就开始使用这个可爱的设计软件。Fireworks在Web设计上,是无法被Photoshop替代的。

虽然已经好多年没有用她,但我依然很伤心。

Adobe似乎被Yahoo!附体。

这篇文章的标题很可笑: 未来? 没有未来。

程序员跟着Adobe走,就不会有未来。兄弟姐妹们,趁着船还没有沉,赶快逃生把。

Apache Flex 4.9.1 playerglobalHome config

在使用 Apache Flex 4.9.1 运行一个测试项目的时候,出现了错误,ANT告知我找不到 (playerglobalHome) 变量。

这个变量是在 frameworks/flex-config.xml 中出现的。我比较了 Apache Flex 4.9.1Adobe Flex 4.6.0flex-config.xml 文件,发现有源码中有两个地方将原来的 libs/player 替换成了 {playerglobalHome}

要解决这个问题,有两个方案:

  1. 设置环境变量 PLAYERGLOBAL_HOME ,值为 %FLEX_HOME%\frameworks\libs\player 即可;
  2. 修改flex-config.xml为原来的样子。

我把所有的 playerglobal.swf 都放在了一个独立的目录,可以让多个版本的Flex SDK共享。很壮观吧……

playerglobalhome

参考文章:

AIR 3.7 SDK Bug:You uploaded an unsigned APK

2013-04-18更新:使用AIR 3.7 SDK打包的APK文件,出现了在某些手机上无法安装的情况,换回AIR SDK 3.6就一切正常。
2013-04-19更新:使用AIR 3.7 SDK打包的APK文件,在Google In-app Billing支付的时候,也出现了问题。具体表现为,Google Play支付成功,信用卡扣款成功,但Google Playe并没有正常返回支付信息,导致最终的支付无法完成。但改为AIR 3.6 SDK打包就一切正常。
我推测,是由于Google Play中上传的那个APK是使用AIR 3.6 SDK打包,必须使用AIR 3.7 SDK打包的APK文件替换原来的AIR 3.6 SDK打包的APK,才会支付正常。但由于AIR 3.7 SDK打包的APK在某些设备上无法安装的问题,我不可能再使用AIR 3.7 SDK去打包了。
2013-04-30更新:根据赵客的建议,向Adobe提交了此BUG:https://bugbase.adobe.com/index.cfm?event=bug&id=3552540


将一个需要更新的APK上传到Google Play的时候,Google Play提示我这样的错误:

Uploaded failed
You uploaded an unsigned APK. You need to create a signed APK.

截图如下:

upload_apk_error

这个提示无疑是 错误 的。我并没有修改过任何编译参数,也从来没有修改过打包使用的证书。在程序编译正常的情况下去修改编译参数和证书?我不是吃饱了撑的么。

这个APK在Android设备上是可以正常安装和运行的,因此程序本身没有什么问题。

我怀疑了许多地方,比如是否有ANE需要签名,或者是否有某些Android权限比较特殊,都没有找到什么线索。
继续阅读 »

在AIR模拟器模式中设置Screen DPI属性

Set Screen DPI on ADL for air simulator mode

在使用AIR开发移动应用程序的时候,我们可以利用AIR Debug Launcher (ADL)在PC上进行调试,这样测试效率更高,速度也更快。

但是,PC的DPI值(72)与移动设备(160、252、362……)不同,这将导致某些依赖设备分辨率的框架和程序,在PC上的表现与移动设备不同。

如果使用Flash Builder 4.7开发,在一般情况下,不会遇到分辨率问题。因为Flash Builder会自动进行DPI的设置。从下面的设置界面中,我们可以看到,在选择一个模拟器配置的时候,这个配置是包含DPI设置的。 继续阅读 »

Google Play Payment Declined

我的Google Play账户一直是好好的,今天突然出现无法支付的情况。

错误描述

在Android设备中进入Google Play的支付流程,选择信用卡并付款后,Google Play弹出界面提醒如下:

Error
Payment Declined

同时,我的Google Wallet账户会收到一笔canceled的付款。

而后,我发现在Google Play中的每一笔付款都会被立即cancel。

在Google Wallet中,可以看到这条交易的Status为:

Your purchase has been cancelled. You won’t be charged.
Google has cancelled this purchase.
Comments from Google: We have cancelled your order because your account is on hold.

问题搜索

采用这些错误关键词搜索到Google Play的帮助文档 Troubleshooting declined payment,该文提到两种可能:

  1. 取消订单,尝试其他支付项目
    我并没有订单需要取消,尝试支付所有的项目,均得到错误提示。
    另外,这个订单在开发状态下生成,我支付的项目在Google Play中处于Draft状态,因此也无法在Android设备的Google Play账户中取消订单。

  2. 信用卡失效,或者信用卡资料变更
    我取消信用卡并重新加入,又尝试了另外两张信用卡,问题依旧。 继续阅读 »

由Unity3D放弃Flash支持想到的

一大早,就在CB上看到了关于Unity3D放弃支持Flash的消息。害怕媒体误读,专门去Unity3D网站看了原文:Sunsetting Flash

不得不说,Unity3D提出的3条放弃理由都让我无法反驳:

1 We don’t see Adobe being firmly committed to the future development of Flash.

Adobe最近取消了Flash Player “Next”的开发计划,当然Actionscript4.0也将不会存在。
对于已有的产品和技术,Flash Builder发展缓慢;ANE打包工具都没有一个;ANE的调试目前只能依赖原生平台……
这是基因问题么? 继续阅读 »