来源: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. Typescript 开发环境的最佳实践

    Typescript 开发环境的最佳实践 0️⃣ git init(略) 1️⃣️️ 初始化:$ yarn add -D ts-node typescript 2️⃣ 生成 tsconfig.json ...

  2. 本地jar包上传docker容器

    先安装docker的注册服务器: [root@VM_0_7_centos ~]# docker run -d -p : --restart=always --name registry2 regist ...

  3. OutOfMemoryError异常——Java堆溢出。

    https://blog.csdn.net/en_joker/article/details/79726975 (将堆的最小值-Xms参数与最大值-Xmx参数设置为一样即可避免堆自动扩展),通过参数- ...

  4. [LeetCode] 278. First Bad Version 第一个坏版本

    You are a product manager and currently leading a team to develop a new product. Unfortunately, the ...

  5. [LeetCode] 369. Plus One Linked List 链表加一运算

    Given a non-negative number represented as a singly linked list of digits, plus one to the number. T ...

  6. mysql instr()函数

    1)instr()函数的格式  (俗称:字符查找函数) 格式一:instr( string1, string2 )    /   instr(源字符串, 目标字符串) 格式二:instr( strin ...

  7. public interface ICloneable

    using System.Runtime.InteropServices; namespace System{ // // 摘要: // 支持克隆,即用与现有实例相同的值创建类的新实例. [ComVi ...

  8. Quartus ii 设计中的差分信号在例化时的命名规则

    在Quartus中做设计,如果使用了差分信号的,如DDR的IP中的mem_ck与mem_ck_n,mem_dqs与mem_dqs_n,将其引入输出端口时,对其命名有一定的规则,否则就会出现错误. 如下 ...

  9. php_MVC实现步骤二

    2.match_split 显示逻辑相分离 将功能强制分成两个部分,显示html文件,和逻辑PHP文件: 要求浏览器请求负责功能的PHP逻辑文件: 该PHP逻辑文件,对需要的显示内容进行载入. 逻辑P ...

  10. GraphQL简介

    原文地址 https://flaviocopes.com/graphql/ 中译文地址 什么是GraphQL GraphQL的原则 GraphQL vs REST Rest是一个概念 单个端点 根据你 ...