来源:http://blog.csdn.net/hero82748274/article/details/8656674

第一次尝试ANE的东西,让我感觉到很折腾人。adobe 出的这个方案虽然可以解决很多as3 扩展性的问题,但是这个方案并不完美在调试的时候没有解决到开发者所需要的调试方案。初次尝试一个ANE 在完全没有背景情况下,第一个程序有时候也是很折腾人。有时候往往低级犯错却导致程序出现闪退的情况。ANE调试HelloWorld 或者弹出一个窗口,内置ios 消费等案例目前还是很多。下面记录一下这周在调试的时候,说起来也很傻。

上一周的第一天,在尝试第一个程序的时候,基本上代码都完成。安装好android环境,不好意思,刚碰上了一个bug,闪退。

第二天,闪退的情况并没有解决,纠结很久也在网上和外国的网站上看了不少案例进行一个对比,闪退的原因还没有找到。

第三天,困扰问题,开始尝试使用其他例子进行。 结果尝试一个案例的文件ane文件结果是ok,但是自己的写案例却不成,为什么?

第四天,依旧没有答案,困扰问题还是一直,不断尝试,如swc 版本,extendsXMl里面文件的更改,ns尝试,版本sdk 尝试,结果还不行

第五天,当使用其他文件打出的jar文件,却没有什么问题。自己尝试写的swc 还是可以,但是转换自己的jar文件就是不行,是版本问题吗?

第六天,出去玩了一下,晚上继续奋战,结果尝试了各种情况,闪退问题终于解决了。

实验过程:ANE 调用ANdroid 弹出窗口:

第一 ,拿已经OK的ANE文件导出的jar 和分解后swc文件,重新 打包 实验结果 ok,证明打包脚本没问题,但是设置extension.xml 文件  ns 命名空间 为3.1 则出问题 调用不到 ,而2.5 则为正常,因此得到证明打包swc的时候要低于14方式打包

<extension xmlns="http://ns.adobe.com/air/extension/2.5">

<extension xmlns=http://ns.adobe.com/air/extension/3.1>

第二、猜测(1)有可能jar 包出错 (2)打包的swc 不对,ns命名空间不行

第三。采用 3.1air sdk 编译的 swc 命名空间为vesion=13 设置ns =2.5的时候,调用已经证明OK的jar包,依旧可以调用到ANE里面的程序
      说明一点,swc 制作文件 没有问题
      推断出,一直的错误在于jar包制作问题上

第四、问题关键就是在jar包导出上

第五。采用2.3.3 api 10的android sdk 导出。
      实验一,采用3.1sdk frextendExtend的扩展jar 出现没有问题 的情况。
      实验二 ,采用不是3.1的freExtend的sdk 扩展也没有问题 ,猜测这个文件和air sdk 没有关。
      最好每次都清理一下android 环境再导出jar 保证是有效。生成的jar 包,最终测试OK。

最后,折腾人的东西原因是jar 包导出出问题。至于为什么会这样?现在还没猜测到。

注意的事情android里面版本也有不同的,在尝试不同版本api的时候 究竟设置版本是不是出现最终原因,设置最低版本,是否ok,这里问题就可以一点点缩窄。

一直出现ExtensionContext.createExtensionContext(xx,xx)==null的情况,是经常有,有时候extension.xml 里面id 设置不对,有时候就像本人这种情况jar 包在导出的时候,一直有bug或者swc版本问题有时候也是权限的问题。

同时也要注意ANE和air sdk 版本问题,

这里有更详细的说明

3.0+

10-13

ns.adobe.com/air/extension/2.5

3.1+

14

ns.adobe.com/air/extension/3.1

3.2+

15

ns.adobe.com/air/extension/3.2

3.3+

16

ns.adobe.com/air/extension/3.3

3.4+

17

ns.adobe.com/air/extension/3.4

3.5+

18

ns.adobe.com/air/extension/3.5

http://help.adobe.com/en_US/air/extensions/WS99209310cacd98cc2d13931c1300f2c84c7-8000.html

extension.xml

后面在尝试第一个ANE的调用的时候,要是遇到这种情况,也可以尝试拿一个已经证明可以调用ANE 文件分解它,使用里面的案例进行调用。一点点排除这种错误。

最后不得不说一点,ANE目前adobe 虽然出来了,调试手段方式并不艺术,坑爹的地方还真不少,望官方真的可以解决,让开发者可以专注在开发设计上,而不是把东西丢出来最后就不管。一直有个问题,air for ios 可以支持编译后是字节码,而为什么对android 平台支持变得少了。

我想后续在官方这安卓个方面上并不会有过多投入和专注上,而会集中在ios上,但是目前真正可以投入使用ios 的air 还有多远的路要走?我想目前还不行。

在之前过快版本推进也出现了不少因为版本导致的问题,这个方面有时候会是一两句可以解决,带来不好的影响是过多的版本 让开发者和开发商不愿意冒险去兼容出现了问题。

另外flash player 版本的问题上,很多页游公司不愿意冒险去使用11版本,为了兼容到10的版本,导致一点是高级的api 分布在不同的版本上,目前意识到这一点,官方在推进版本问题上今年上会更需要慎重一点。

另外一点,偶然放一下,第二天就有灵感。太过纠结这个问题,就导致一个星期找不到问题的折腾日志。

Air for ANE:一星期的调试笔记的更多相关文章

  1. Tomcat调试笔记

    调试笔记 在使用Tomcat过程中经常碰到问题,导致tomcat启动失败.如下↓ 由于报错太过笼统,我根本无法找出错误.后来我切换到Console视图下,看到了如下错误信息. 根据报错信息,错误原因是 ...

  2. JavaScript特效(调试笔记)

    JavaScript特效 一.在网页上显示当前的时间日期,例如:“2016年3月26日 星期六”. js源代码: function getTime() { var today = new Date() ...

  3. USB wifi调试笔记

    本文以realtek 8192CU WiFi模块为例,介绍USB wifi在Jelly Bean 4.1的调试笔记. 1.WIFI打不开现象概述 WiFi打不开是指您在UI的settings下选中Wi ...

  4. ida动态调试笔记

    ida动态调试笔记 目标文件:阿里安全挑战赛的第二题 点击打开链接 使用环境:ida6.8点击打开链接,adt bundle点击打开链接 首先打开avd安卓模拟器,界面如下: 在dos下运行adb命令 ...

  5. modbus-poll和modbus-slave工具的学习使用——modbus协议功能码3的解析(及欧姆龙温控器调试笔记)

    最近的项目中使用到了欧姆龙的温控器,里面有很多的通信方式,我们使用的常见的modbus——RTU方式,其他方式我们不使用,其中通信手册上面有很多通信的实例,欧姆龙modbus还区分4字节模式和2字节模 ...

  6. ANE原生代码的调试(安卓)

    忙了一天终于有空继续这篇教程了. ANE的原生代码的调试其实在Adobe的官网有介绍的,但是同样很含糊,我摸索了一段时间现在记录下我的心得. 首先你得安装Eclipse,然后你得启动Eclipse 然 ...

  7. Air for ANE:打包注意的地方

    来源:http://blog.csdn.net/hero82748274/article/details/8631982 今天遇到了一个打包ANE 文件的问题,导致花费了几个小时查找,最后师弟的一句话 ...

  8. GDB调试笔记

    参考资料:GDB调试精粹及使用实例 # 调试实例 #include <iostream> #include <cstring> using namespace std; ][] ...

  9. 《C#并行编程高级教程》第7章 VS2010任务调试 笔记

    没有什么好说的,主要是将调试模式下的Parallel Tasks窗体和Parallel Stacks窗体.折腾一下应该比看书效果好.(表示自己没有折腾过) 另外值得注意的是,主线程不是一个任务.所以主 ...

随机推荐

  1. Unity接入微信登录 微信分享 微信支付 支付宝SDK

    你将会学到的unity集成SDK游戏中接入微信支付与支付宝支付游戏中接入微信登录与微信分享 目录 mp4格式,大小2.2GB 扫码时备注或说明中留下邮箱 付款后如未回复请至https://shop13 ...

  2. VMware7.1安装教程

    VMWare是一个"虚拟PC"软件公司.它的产品可以使你在一台机器上同时运行二个或更多Windows.DOS.LINUX系 统.与"多启动"系统相比,VMWar ...

  3. MXNet 定义新激活函数(Custom new activation function)

    https://blog.csdn.net/weixin_34260991/article/details/87106463 这里使用比较简单的定义方式,只是在原有的激活函数调用中加入. 准备工作下载 ...

  4. nodejs 管道判断

    // 不优雅的判断管道判断 let d process.stdin.on('data', chunk => { d = String(chunk) }) setTimeout(() => ...

  5. LeetCode_441. Arranging Coins

    441. Arranging Coins Easy You have a total of n coins that you want to form in a staircase shape, wh ...

  6. Android属性动画-简单实例

    1.ValueAnimator //在2000毫秒内,将值从0过渡到1的动画 ValueAnimator anim = ValueAnimator.ofFloat(0f, 1f); anim.setD ...

  7. Java开发笔记(一百一十九)AWT布局

    前面介绍了如何在窗口上添加一个按钮,可是每个软件界面都包含了许多控件,这些控件又是按照什么规则在界面上排列的呢?仍以按钮为例,假如要在窗口上依次添加多个按钮,那么界面会怎样显示这些按钮?想当然的话,按 ...

  8. 用Python实现扑克牌面试题思路

    据说是腾讯的面试题,以下是要求: 一副从1到n的牌,每次从牌堆顶取一张放桌子上,再取一张放牌堆底,直到手中没牌.根据桌上的牌堆顺序,输出原先手中牌堆的顺序数组. 实现思路: 1.首先定义一个2维数组, ...

  9. SQL——JOIN(连接)

    JOIN基于多个表之间的共同字段,把多个表的行结合起来. 一.INNER JOIN 关键字 INNER JOIN关键字:在表中存在至少一个匹配时返回行. 语法如下: SELECT 列名1,列名2... ...

  10. pandas中的axis参数(看其他人的博客中产生的疑问点,用自己的话解析出来)

    axis有两个值:axis=0或者axis=1 看到很多资料都不太理解,把我个人理解说一下: 下面这张图,在很多资料中都看到了,我只能说先死记住 axis=0,代表跨行(注意看这张图的axis=0的箭 ...