解密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资源”

解密ADT第一篇-aapt详解

我的出发点

接触AIR将近有一年的时间,这一年里遇到很多很多的问题,从AIR FOR ANDROID 的APK签名错误,到ANE的适应所有调用原生,再到APK的加密解密反编译,然后是跨IOS/ANDROID  一路伴随AIR走来,AIR从3.4到现在的4.0,应该说见证了一些东西的发生与过程.一直以来希望找一个切入点 而形成一系列的分析文章,刚好今天临下班前突然奇想,其实我可以从分析AIR的打包工具ADT开始.于是萌发了写这篇(如果有后续的话 包括后续)文章的想法,现在第一篇我想把aapt这个工具的使用详细分析.并最终给出在写ANE过程中困扰我已久的最有效资源处理方式.

PS:为什么我会从一个工具开始说,因为ADT就像汽车一样,而aapt则是ADT的后轮的轮胎中的打气孔

AIR Developer Tool (ADT)

AIR Developer Tool (ADT) 是用于开发 AIR 应用程序的多用途命令行工具。您可以使用 ADT 执行以下任务:
• 将 AIR 应用程序打包为 .air 安装文件
• 将 AIR 应用程序打包为本机安装程序。例如:在 Windows 上打包为 .exe 安装程序文件,在 iOS 上打包为 .ipa,或者在
Android 上打包为 .apk

Flascc与IOS打包IPA

最近研究Flascc顺道应用到AIR for IOS项目中,发现Flascc编译的优化等级与打包IPA有着非常大的关系

首先是一个老外先发现的:传送门

AIR 打包IPA

先说说AIR for IOS打包,打包限制发行版和发行版 官方文档说需要多一点时间,其实那里止需要多一点时间啊,除了时间需要多一点以外(4G内存版MAC 需要15分钟以上),还需要配置64位的机子 4G以上内存,32位的别想打包IPA顺畅了(注意 是顺畅 不是不能),翻看JAVA虚拟机LVM官方解释是 32位的虚拟机限制到1.5G的内存,而64位的JDK则不限制内存,而AIR 打包IPA的时候虚拟机内存一路飙升,我一开始使用32位+4G内存打包的时候  打开内存查看器看到java.exe所占内存一路高歌 直到爆掉。不禁让人唏嘘,请问adobe打包个ipa要那么多内存干什么?

继续阅读“Flascc与IOS打包IPA”

[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]签名类型.P12与.keystore

对于AIR项目的签名类型 无论是android 还是IOS。似乎大家都只知道是.p12 也就是PKCS12类型,很多人都苦恼怎么签名和原生开发的不一样(主要是针对android)。一般android原生开发是使用JKS也就是 .keystore文件来签名。我一直以来想研究出用.p12签名文件转换成.keystor文件的方法。但是很抱歉。从.p12文件转到.keystore会缺少密匙链。当然反方向转换没什么问题。

在AIR手机游戏联合运营的今天。充斥着各种平台的签名 繁杂而讨厌。很多时候如果APK或者IPA需要自己做后台服务器更新的话 还需要去找运营商签名。严重影响更新进度。当然让运营商提供.keystore文件也可以。但是很多人只知道AIR打包只能用.p12文件签名。而使用.keystore文件似乎只有走 打包好APK再重新签的方式。其实不然。p12文件的签名方式 只是FB上限制的。在adt中已经提供了所有签名方式:

-storetype keystore 的类型,由 keystore 实现确定。大多数 Java 安装随附的默认 keystore 实现支持 JKS 和 PKCS12 类型。
Java 5.0 包含对 PKCS11 类型和 Keychain 类型的支持,前者用于访问硬件标记中的 keystore,后者用于访问 Mac OS X
keychain。Java 6.0 包含对 MSCAPI 类型的支持(在 Windows 中)。如果安装和配置了其他 JCA 提供程序,则可能还可以
使用其他 keystore 类型。如果未指定任何 keystore 类型,则使用默认 JCA 提供程序的默认类型。

[ANE for IOS]iOS自定义URL方案解析

在ios中程序间互相调用可以通过url来解决。在oc里面直接在函数handleOpenURL 便可,但是在ane中就没那么简单了。下面详细介绍下air项目中url的设置和使用,使用支付宝快捷支付ane作为例子。网上有稀稀疏疏的几篇文章偶尔提及,但是并没有完全给出一个DEMO来.

在此之前请详细阅读官方文档:传送门

关于打开URL的ANE例子:传送门

IOS里OC的处理方式:传送门

在AIR中配置URL供其他程序调用


1.首先需要在-app.xml中加入如下配置:([IPHONE]标签中)

[code lang=”java”]
<iPhone>
<InfoAdditions><![CDATA[
<key>UIDeviceFamily</key>
<array>
<string>1</string>
<string>2</string>
</array>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>AlipayANE</string>
</array>
<key>CFBundleURLName</key>
<string>com.rect.app</string>
</dict>
</array>
]]></InfoAdditions>
<requestedDisplayResolution>high</requestedDisplayResolution>
</iPhone>
[/code]

在这类配置了一个Name为”com.rect.app”的Schemes.调用方式为”AlipayANE://”;

继续阅读“[ANE for IOS]iOS自定义URL方案解析”

[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项目个人技术总结”