[AIR接入Android 平台]处理res资源之找不到资源ID

一点声明:我的水平有限 这里仅仅只能写出我认为可行的方案 和 代码

打包ANE会经常遇到找不到资源R.XXX ID的问题,或者是找到的资源ID不对 然后报NULL POINT错 直接程序崩溃。

AIR与android原生取资源方式的区别
ADOBE给出的取资源的方式是:

[code lang=”java”]
_context.getResourceId("id.AlipayTitleItemName");
[/code]
但是原生JAVA取资源的方式是:
[code lang=”java”]
findViewById(R.id.AlipayTitleItemName);
[/code]

ADOBE的取资源方式 是我们在ANE中使用到资源的时候的取法,
但是一般运营商提供的SDK都是混淆的jar 取资源的方式都是清一色的findViewById。
而我们不可能去修改SDK 的jar。除非你的逆向能力到一定水平。其实修改SDK的jar也不是不可能的。对于android逆向有兴趣的同学 可以去试试。其实android逆向也是一门非常好玩的技术。如果你有兴趣 我们可以一起探讨。
继续阅读“[AIR接入Android 平台]处理res资源之找不到资源ID”

[AIR for Android] 让UC SDK 一辈子竖屏

UC SDK的问题之前已经说明:

前面的解决方式

今天把版本发给UC 的时候 那边看到我把所有SDK的界面都给横屏了 表示不能通过。

也就是说。必须竖屏!!!
没办法 不竖屏硬是不给发布。

那怎么办呢??追根溯源。这个问题就是由于AndroidSDK在横竖屏切换时,activity被销毁

但是设置

[code lang=”java”]android:configChanges="orientation|keyboardHidden|screenSize"[/code]

属性并不能解决问题 这可能是和GPU渲染的特性有关。

也就是说 对于 主游戏启用GPU的activity 不能横竖屏切换。知道这一点那就好办了。

那我们传一个自己新建的activity给SDK就可以解决问题了。

之前解决银联插件的问题的方式也是如此
继续阅读“[AIR for Android] 让UC SDK 一辈子竖屏”

[AIR for Android] 让UC SDK 一辈子横屏

这里做一个记录。

UC SDK“ BUG”描述

目前我的项目是 必须要求 横屏的。

但是UC的SDK 除了登录界面可以设置横屏之外。

个人中心的 账户 论坛 攻略 帮助 界面

支付界面 全部清一色的竖屏。

跟UC官方对接人沟通良久,得到的答复是:

爱莫能助” ,“我也跟产品提了几次”,“我们那么多产品都是竖屏的都没问题,所以肯定是你们开发商的问题

得,虽然我早就知道他们会这样说 但是还是抱有一丝希望他们能改进。毕竟除了UC之外 其他全部android SDK几乎都提供横屏 竖屏的方式。

之所以必须使用横屏 前面的文章也说了。应该是 Starling+AIR 项目初始横屏的原因。在切换横竖屏的时候会强制退出游戏  不是FC 不是内存爆掉 不是OOM

总之肯定是一个AIR的坑。
继续阅读“[AIR for Android] 让UC SDK 一辈子横屏”

[AIR for Android] 91ANE 横竖屏android设备闪退BUG的解决方式

这里做一个记录。

91ANE BUG描述

目前我的项目是 必须要求 横屏的。

在昨天有玩家 和 平台方的反馈  91的登录 在切换横竖屏幕部分设备(例如天语某机器 )上出现闪退的情况

而平台方只要他们测试的有一台机器有问题 他们就会把你的版本打回去 拖延你升级时间 推广时间 非常恶心。

所以这个BUG虽然只针对极少极少的机器但是 也必须马上解决。

我的解决方式

经过我的检查 91ANE共提供三种显示方式的选择:

SCREEN_ORIENTATION_PORTRAIT 竖屏(值为:0)

SCREEN_ORIENTATION_LANDSCAPE 横屏(值为:1)

SCREEN_ORIENTATION_AUTO 自动(由重力感应自动选择)(值为:2)
继续阅读“[AIR for Android] 91ANE 横竖屏android设备闪退BUG的解决方式”

[AIR接入Android 平台]处理res资源之文字国际化

一点声明:我的水平有限 这里仅仅只能写出我认为可行的方案 和 代码

文字国际化 其实是android编码的规范之一。但是不同的运营商提供的SDK 这块处理的都不一样。

就目前我接触过的平台来说。当乐 UC 91 360 算做得很好。

但是其他小平台  特别是有一个运营商 他们客户端技术才一个人。

都很不注重android文字国际化的问题。打包进ane的资源 布局文件XML必须是规范的国际化处理的。

否则就会在打包APK的时候报错。
继续阅读“[AIR接入Android 平台]处理res资源之文字国际化”

[AIR for Android]AIRSDK3.5打包运行时纹理丢失BUG

AIRSDK版本:3.5

项目使用的引擎:Starling

纹理使用流程:加载ATF – 解压 -上传到GPU – 渲染

打包:加入运行时 RunTime.apk 打入APK

BUG重现:

在一部分机器上 纹理会完全丢失。例如HTC的部分机型。

解决方式:

A.换AIR3.7以上的版本打包

B.不加入运行时 (这样玩家会在打开项目的时候自行下载 )

C.把AIR3.7 或者3.8的 RunTime.apk 替换AIR3.5的RunTime.APK(这种方法和换SDK没差别好像)

[AIR接入Android 平台]第三步 打包处理多个JAR变成一个JAR提供给第五步

一点声明:我的水平有限 这里仅仅只能写出我认为可行的方案 和 代码

接入android 运营平台 一般平台方都会提供一个或者更多的jar包。但是我们的ane只能打包一个jar包。这就需要我们把这些jar全部集合到一个去。

我的方法是基于一个兄台的教程的改进:传送门

拿我接过的最繁琐的一个SDK来说,它要求我必须连入6个jar。如图

需要把 其余的jar 都合并到 flane.jar中。
继续阅读“[AIR接入Android 平台]第三步 打包处理多个JAR变成一个JAR提供给第五步”

[AIR接入Android 平台]第二步 编写 JAVA端接口 与 AS端接口项目

这和编写其他所有ANE类似。网上可以找到一堆的教程。但是我觉得都不够清晰。如果你已经对编写ANE有足够的把握 那这篇文章完全可以不看。

一点声明:我的水平有限 这里仅仅只能写出我认为可行的方案 和 代码

而且针对接入平台运营商的情况。这种ANE基本都具有四个功能:

初始化SDK  -> 登录 -> 付费 -> 退出

所以我决定针对接入android平台而写一个基本的ANE教程。我接入的所有平台的ANE 都是基于教程中给出的源码而做的改进。

ANE作为AIR调用本地代码的机制 他的组成分为两部分:

在开始之前 先限定一些共同的ID:

接口 ID:com.rect.ane

初始化SDK标识:rect_function_init

登录标识:rect_function_login

付费标识:rect_function_pay

退出SDK标识:rect_function_exit
继续阅读“[AIR接入Android 平台]第二步 编写 JAVA端接口 与 AS端接口项目”

[AIR接入Android 平台]打造登录付费ANE全教程

目前为止我为项目共接入了大概8家或大或小的平台。深知AIR移动项目接入运营平台在打造ANE过程中会有各种各样的问题。在这里我打算把我遇到的问题 和解决方式记录下来,也许你用得着 也许你已经遇到过 也许你已经解决掉。接下来我会从我的air项目和各种android应用运营平台方的SDK接入过程 中 遇到的问题进行探讨。其中有些问题已经解决 有些问题解决得很差强人意,有些问题尚未解决。也请已经解决了这些问题的朋友  能和我交流。当然我对原生android开发刚刚入门 有一些看法或多或少存在错误。也请看到的朋友能Email我指出。(rectvv[at]gmail[dot]com)

首先关于最近大家都在群里讨论 AIR是生是死的问题,ASER是否转行的问题,我觉得应该把当下的事情做好,作为一个程序员不应该被一种语言 或者被一个公司束缚住,就像CODE COMPLETE里面说的一样。程序员应该是超越语言的。当然我目前还没到这水平。接下来进入正题。

在这之前 我之前写了一些关于ANE更早的一些文章:传送门

————————————————–

我的项目信息

使用的跨平台技术:Adobe Air

使用的GPU加速框架(引擎?):Starling

使用的AIR SDK版本:3.5

(AIR3.5打包STARLING项目出来的的APK对于HTC的机器会有一个BUG,更新到AIR3.7之后 HTC的BUG解决了 但是对三星的一款机器又出一个新BUG 目前我还在寻找完美的解决方式  当前我的解决方式并不完美 详细的BUG描述会在后面统计的时候给出)
继续阅读“[AIR接入Android 平台]打造登录付费ANE全教程”

[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(已解决)”