编写ANE流程:

1. 在xcode里编写.a原生类库
2. 更改配置文件extension.xml, 定义了原生程序的扩展接口
3. 编写AS替身类,生成扩展类包.swc,解压再得到library.swf.
     通过adt命令生成ane文件。
4. 通过adt命令生成.ane扩展文件,在flash应用程序里调用接口来实现原生类的功能。
bin/adt -package -storetype pkcs12 -keystore selfsigned.p12 -storepass 1234 -target ane ext/InApp.ane extension.xml -swc ANE_IAP_ASLib.swc -platform iPhone-ARM library.swf libAppPurchase.a
 签名文件selfsigned.p12可以通过Flash CS5生成,在AIR的Android选项卡中选择创建。不签名生成的话,在Win7的FB4.6中调用会报“未签名”的错误。但在Mac的FB4.6 中使用时,未签名并不会报错误。为了通用的话,还是签名一下比较好。
 
 
5. 可以在FB4.6中设置ADT扩展直接生成ipa.
    也可以先用swc或ane( 附加编译器哭路径)生成应用程序SWF文件,再通过ADT命令来生成ipa.
 
bin/adt -package -target ipa-test-interpreter -provisioning-profile ghostbride_dev.mobileprovision -storetype pkcs12 -keystore jameslidevelopment.p12 -storepass 1234 Main.ipa info-app.xml ANE_IAP_Example.swf -extdir ext icon

问题解决:

1。生成ANE时报错:
Invalid swc file.  The extension NameSpace requires the SWF version to be 13 or lower.
 
解决1:附加的编译器参数: -locale en_US -swf-version=13  但这种做法可能会导致错误3
解决2:把Air的extension namespace改成对应的版本就可以(这个例子原本默认是2.6, 改为3.1就能解决)
参见Air对应的SWF版本:
SWF 11 for AIR 2.7, SWF 13 for AIR 3, and SWF 14 for AIR 3.1.
 
 
2。.a文件名不能有_(下划线),否则打包ANE会报错:
error 105: extension….nativeLibrary contains an invalid value.
3.  打包ipa出错:
Included native extension ‘com.company.xxx’ includes a SWF version 13 which is greater than the version of the root SWF of this application: 11
可以按照报错信息所说,把swc的Lib库重新打包成-swf-version=11再发布ANE就行了。或者把应用SWF文件发布成对应的版本(CS5.5只能发布到11了)
4. FB4.6编译时不认platform的这个参数<option>-ios_version_min 4.0</option>
解决:在项目设置中指定IOS5的SDK路径
 
5。FB4.6编译卡在57%的问题
这个可能是AIR版本或是IOS版本不一致的错误,或者哪个编译参数写的不对或其他,FB中不会看到错误,只能拿命令行去编译,查看报错信息。这种情况下,虽然命令行编译可以成功打包ipa,一般情况下都是不能用的版本。所以用命令行排查了错误,再拿FB打包,一般就OK了。
6。报错 Main-app.xml: error 117: This target requires at least namespace 3.0 to package native extensions.
很显然的错误,把这个文件版本改高了就好
<application xmlns=”http://ns.adobe.com/air/application/3.0″>
7。装到手机上就崩溃跳出的问题
Xcode的Skip Install参数要选择NO!!!  检查一下!  这个参数真是很讨厌啊!

8.Missing implementation for platform: Android-ARM

没写完结尾是:"......-C Android-ARM .”我少了" ."汗。

注意:

1. example-app.xml 一定要写对应 extensionID !!!!  不写extensionID打包成功不会报错,但测试ipa时ANE的部分没有反应。所以ANE没有反应时,首先就要先检查这个参数。
还有创建swc时,ExtensionContext.createExtensionContext()这里的参数也要跟extensionID对应好,不然ANE也会没反应,尤其是更改extensionID时不要忘了。
2。用ADT命令编译ipa时指定SDK版本:
-platformsdk /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/
不指定默认为4.0,有一些5.0的功能没办法用
参考External SDK:
3。这篇20条建议写的不错,很多情况都遇到了
有james.li的翻译版本,不过第18条他漏了一块,可以参考英文版本
4。关于enable linking with shared libraries 这个选项,假设你在Air里指定了SDK路径,或者没有用到额外的类库,那么设为YES或NO都无所谓了。
5。使用Flash CS5.5作为Compiler编译SWF,在Flash CS5.5的发布设置中选择Flash Player,并在发布的时候忽略这个错误: VerifyError: Error #1014: Class flash.external::ExtensionContext could not be found。直接使用生成的SWF即可。
6. 写个.sh脚本来执行命令行, 先用chmod +x run.sh 赋给文件可执行权限。
7.补充一下,发现swc发布成低版本并不影响Air 3.1域的使用,所以遇到上面的问题3时可以把Lib库打包成适应CS5.5的版本,也就是flash player 11。

ANE在ios上的使用流程和问题解决的更多相关文章

  1. qt-qml移动开发之在ios上开发和部署app流程简单介绍

    qt5.3已经全面支持移动开发,除了mac,windows,linux.还支持ios,android,wp,meego等移动平台,本教程是作者依据自己的经验,从头讲怎么样在ios上公布自己的app.因 ...

  2. Ios 程序封装,安装流程

    转:http://www.myexception.cn/operating-system/1436560.html Ios 程序打包,安装流程 一.发布测试,是指将你的程序给   * 你的测试人员,因 ...

  3. 转:基于IOS上MDM技术相关资料整理及汇总

    一.MDM相关知识: MDM (Mobile Device Management ),即移动设备管理.在21世纪的今天,数据是企业宝贵的资产,安全问题更是重中之重,在移动互联网时代,员工个人的设备接入 ...

  4. Pluto - iOS 上一个高性能的排版渲染引擎

    WeTest 导读 Pluto 是 iOS 上的一个排版渲染引擎,通过 JSON/JS 文件可以很方便地描述界面元素,开发效率很高,并且在流畅度,内存等方便有保证.pluto.oa.com 上有更多详 ...

  5. 基于IOS上MDM技术相关资料整理及汇总

    (转自:http://www.mbaike.net/special/1542.html) 一.MDM相关知识:MDM (Mobile Device Management ),即移动设备管理.在21世纪 ...

  6. iOS上架的整体流程和建议

    App Store上架指的是iOS应用从提交申请到上线的整个过程,它的目的是让应用展示在App Store上获取流量.用户. 一.iOS上架的整体流程 1.申请开发者账号 苹果的开发者账号主要分为三种 ...

  7. 图文详解丨iOS App上架全流程及审核避坑指南

    App Store作为苹果官方的应用商店,审核严格周期长一直让用户头疼不已,很多app都"死"在了审核这一关,那我们就要放弃iOS用户了吗?当然不是!本期我们从iOS app上架流 ...

  8. 细数iOS上的那些安全防护

    细数iOS上的那些安全防护  龙磊,黑雪,蒸米 @阿里巴巴移动安全 0x00 序 随着苹果对iOS系统多年的研发,iOS上的安全防护机制也是越来越多,越来越复杂.这对于刚接触iOS安全的研究人员来说非 ...

  9. 微信双开是定时炸弹?关于非越狱iOS上微信分身高危插件ImgNaix的分析

    作者:蒸米@阿里移动安全 序言 微信作为手机上的第一大应用,有着上亿的用户.并且很多人都不只拥有一个微信帐号,有的微信账号是用于商业的,有的是用于私人的.可惜的是官方版的微信并不支持多开的功能,并且频 ...

随机推荐

  1. 《Python 学习手册4th》 第十七章 作用域

    ''' 时间: 9月5日 - 9月30日 要求: 1. 书本内容总结归纳,整理在博客园笔记上传 2. 完成所有课后习题 注:“#” 后加的是备注内容 (每天看42页内容,可以保证月底看完此书) “重点 ...

  2. 帮同事写了几行代码,在 安装/卸载 程序里 注册/卸载 OCX控件

    写了个小控制台程序,这个程序用来注册 / 卸载OCX控件,用在Inno Setup做的安装卸载程序里. #include "stdafx.h" #include <windo ...

  3. dbms_file_transfer使用简介

    dbms_file_transfer这个包可以在两个位置传输文件,分别可以有以下位置: a 从一个asm diskgroup传输到另外一个asm diskgroup b 从一个asm diskgrou ...

  4. Canvas入门(1):绘制矩形、圆、直线、曲线等基本图形

    来源:http://www.ido321.com/968.html 一.Canvas的基础知识 Canvas是HTML 5中新增的元素,专门用于绘制图形.canvas元素就相当于一块“画布”,一块无色 ...

  5. PackageManager获取版本号

    PackageInfo代表的是关于一个包的所有信息,就相当于一个APP应用的清单文件中收集到的所有信息. 通过这个类我们就可以获取类似版本号等一些信息. /** * 得到应用程序的版本名称 */ pr ...

  6. Chapter4:表达式

    左值和右值 当一个对象被用作右值的时候,用的是对象的值(内容),当对象被用作左值的时候,用的是对象的身份(在内存中的位置). 一个重要的原则是需要右值的地方可以用左值来代替,但是不能把右值当作左值使用 ...

  7. codeforces 704B - Ant Man 贪心

    codeforces 704B - Ant Man 贪心 题意:n个点,每个点有5个值,每次从一个点跳到另一个点,向左跳:abs(b.x-a.x)+a.ll+b.rr 向右跳:abs(b.x-a.x) ...

  8. java集合框架复习(一)

    数组类Array是java中最基本的一个存储结构,它用于存储 一组连续的对象或一组类型相同的基本类型的数据. Array特点:效率高,但容量固定且无法动态改变, 缺点:无法判断其中存有多少元素,len ...

  9. 使用Async同步执行异步函数

    为了适应异步编程,减少回调的嵌套,我在项目中引入了Async,当批量处理且需要同步执行一些逻辑相同的异步函数时,觉得还是Async最为靠谱. 我有一个类似下面代码的场景,依据数组中的每一个元素执行一个 ...

  10. 关于CoreData和SQLite多线程访问时的线程安全问题

    数据库读取操作一般都是多线程访问的.在对数据进行读取时,我们要保证其当前状态不能被修改,即读取时加锁,否则就会出现数据错误混乱.IOS中常用的两种数据持久化存储方式:CoreData和SQLite,两 ...