转载 :http://blog.csdn.net/linguifa/article/details/12754489

开发QQ互联ios版Ane扩展辛酸史:

1、安装mac系统非常痛苦,找了好几个版本都装不上,同时对mac的基本操作和xcode的基本操作不熟悉。

2、用xcode建立ane项目(使用xcode-template-ane-master模板),引入第三方object-cframework,生成.a文件,供windows下生成ane文件。

发现windows下 调用第三方sdk后编译的ane,air调用打包时卡住(原因有两种,一是object-C项目代码有错误,但可正常生成.a库文件;二是引用了第三方framework,但未配置platform.xml打包进ane中,读取不到第三方sdk)。

解决办法:先排除引用第三方类库问题,再排查代码(只好对怀疑的地方注释掉在编译.a,生成ane再打包)

排查完错误后,编译不卡住了,但仍旧打包时报错:

打包应用程序时出错:

Undefined symbols for architecture armv7:

"_qqSDKExtFinalizer", referenced from:

_g_com_adobe_air_fre_fmap in extensionglue.o

(maybe you meant: _qqSDKExtFinalizer_name)

"_qqSDKExtInitializer", referenced from:

_g_com_adobe_air_fre_fmap in extensionglue.o

(maybe you meant: _qqSDKExtInitializer_name)

"_OBJC_CLASS_$_CTTelephonyNetworkInfo", referenced from:

objc-class-ref in TencentOpenAPI(MTA4QCHelper.o)

ld: symbol(s) not found for architecture armv7

Compilation

3、通过配置platform.xml解决上面这个错误(在linkerOptions属性中添加引用的第三方类库)。

windows下重新打包生成ane,air项目运行打包报错:

原因是打包时adt会去读取该第三方类库,读取不到。需要在fb中本机扩展处配置Apple iOS sdk(因为iossdk没有windows版,因此需要把fb项目放入mac上运行,进入第4点)

注意<linkerOptions> 标签需要 AIR 3.3 或更高版本

4、在mac上安装fb,配置好air项目,在本机扩展中配置Apple iOS sdk:

/Applications/Xcode2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/

并且把第三方类库TencentOpenAPI.framework 放入上面路径中System/Library/Frameworks/下,在xcode中导入相关需要的ios类库

再运行提示

ld: librarynot found for -libiconv

Compilationfailed while executing : ld64

原因是linkerOptions ios的类库名字错误,命名-libiconv 要写成 -liconv(必须去掉ib两个字符)

配置完成后重新在windows中打包ane,air项目运行终于ok,调用第三方程序运行正常。Platformoptions.xml配置如下:

5、因为不想把项目放在mac上编译,因此需要在ane上想办法,把第三方framework打包进ane中(这就要求ane打包过程必须在mac上完成)

借助 platformoptions.xml里面配置packagedDependencies节点属性把第三方类库配置进去

使用命令行打包ane提示错误:Missing dependency TencentOpenAPI.frameworkfor platform iPhone-ARM

platformoptions.xml里面配置了packagedDependencies节点属性---引用了第三方类库,需要把这个类库放到打包的文件夹下

注意<packagedDependencies> 标签需要 AIR 3.5或更高版本。

再使用 adt 打包ane,报错:Unable to build a valid certificate chain for the signer.

可能是mac上使用windows 生成 .p12文件不支持导致的。

网上有个方法说在mac上使用firefox怎样重新生成.p12(http://forums.adobe.com/message/1975832#1975832)未完全明白怎么操作,还是老老实实用mac来生成.p12文件用于ane生成和ipa发布。

这样为第三方framework生成的ane文件 就可供widows上的 air项目使用了,并不需要在mac上开发建项目引入ios sdk。

6、为QQ互联sdk写ane,发送消息无法回调,因为 object-c部分要重写handleOpenURL方法,而air app自动创建的窗口无法重写这个方法。

解决办法:a s上侦听 InvokeEvent.INVOKE事件,收到事件后再通过ane调用 object-c方法,里面再调用sdk的handleOpenURL方法。

[java] view plaincopy
  1. NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, onInvoke);
  2. private function onInvoke( event : InvokeEvent ) : void
  3. {
  4. if (Capabilities.manufacturer.indexOf("iOS") != -1)//只在ios下采用这种方式
  5. {
  6. if (event.arguments != null && event.arguments.length > 0)
  7. {
  8. var url:String = event.arguments[0] as String;
  9. if ( url != null && url.indexOf("tencent") == 0)
  10. {
  11. contex.call("handleOpenURL", url);
  12. }
  13. }
  14. }
  15. }

7、qq互联登录成功后客户端把openid、access_token传递给服务端访问开放平台api提示100030 错误:用户没有对该api进行授权

一开始以为是openid和access_token错误,实际原因是 authorize传递的参数问题,没有填写该api的权限字符串,可加上或者传 @"all"。每个权限的字符串就是调用的哪条cgi的fun 譬如:https://graph.qq.com/user/get_app_friends权限字符串就是:get_app_friends。

8、其他小插曲,一开始安装了flash builder4.7,配置最新的air3.9,项目编译报错:提示: “在源路径中找到的文件必须拥有一个外部可见定义。如果文件中的某个定义应当是外部可见的,请将该定义放入包。”

“AIR 应用程序 ID“net.flash8.game.guess.debug”与在配置概要文件中指定的模式“net.flash8.game.guess”不匹配。请更改应用程序 ID,或使用与现有ID 相匹配的配置概要文件。”

没找到原因,于是又安装flashbuilder4.6,配置最新的air3.9,后正常。

Mac下升级airsdk的方法:(和windows下升级方法相同,mac中fb4.7比较复杂)

http://www.vimer.cn/2013/07/mac下flash-builder-4-64-7-升级-airsdk的版本至3-8的方法.html

xcode出现错误Unsupported compiler 'GCC 4.2'selected for architecture 'i386'

解决方法 在Buildingsetting  找到Compiler for C/C++/Objective-C 这项  选择LLVM  GCC 4.2就OK

xcode出现错误:

Undefined symbolsfor architecture armv7:

“_OBJC_CLASS_$_XXX”,referenced from:

objc-class-ref inXXX

ld: symbol(s) notfound for architecture i386

clang: error:linker command failed with exit code 1 (use -v to see invocation)

如果真机调试就是undefined symbols for architecture i386错误!

发生这种错误通常是project.pbxproj这个文件引起的,尤其在多人合作开发的时候,svn提交不规范可能导致project.pbxproj发生错误,导致文件的引用不在project.pbxproj文件中。

xcode项目import文件会根据project.pbxproj来查找,查找不到文件的引用则会有上述的错误。

解决方法点击工程,在主界面中点击BuildPhases,根据提示信息“XXX”来判断缺少什么文件,一般如果缺少自定义的文件,XXX会是缺少的类名,那么就在Complie Sources中加入该文件。如果缺少类库,则在Link Binary With Libraries中加入该类库。

xcode 有时编译不出.a文件,但仍提示buildsuccess,这种情况大多是代码有误,重新新建一个工程,把代码拷过去。(只在xcode 4.6上遇到,后面果断安装最新xcode5.0)

命令行打包ane提示错误:Namespace of platformoptions.xml should match extension namespace.

platformoptions.xml里面的air版本号配置必须和extension.xml里面一致,同时,打包ane用到的air sdk版本必须大于或等于改版本号。

遇到上面这些问题,并解决后,终于把QQ互联的iso版ane开发完成、并调通调用。期间中途受阻,还研究了下别人写的一个QQ互联的ane看能不能直接拿来用,最终发现不支持,还得自己开发。

归纳步骤:

1、配置开发环境(mac、xcode,熟悉他们的用法)

2、创建xcode工程(建议使用xcode-template-ane-master),导出.a库文件

3、创建As commonAneLib工程,编写ane命令并打包

4、配置-app.xml权限(很重要)

5、air项目工程调用

参考的相关网站:

构建本机库:
http://help.adobe.com/zh_CN/air/extensions/WSf268776665d7970d-2e74ffb4130044f3619-7fff.html#WSdb11516da818ea8d49ce0fe713341ed67cf-7ffe

应用程序启动和退出选项

http://help.adobe.com/zh_CN/AIR/1.1/devappsflex/WS5b3ccc516d4fbf351e63e3d118676a5d46-8000.html

构建针对 iOS 和 Android 的原生扩展 – 第三部分: 构建 iOS 库

http://www.adobe.com/cn/devnet/air/articles/building-ane-ios-android-pt3.html

iOS5support for AIR/Using external SDKs to package apps:

http://blogs.adobe.com/rajorshi/2011/11/16/ios5-support-for-airusing-external-sdks-to-package-apps/

使用ANE整合Facebook http://zengrong.net/post/1831.htm

Adobe AIR打包用到外部sdk的ANE时报错

http://www.flashj.cn/wp/error-when-adt-package-ipa-with-ane-includes-ios-external-sdk.html

IOS ANE的坑爹之路(一)http://rolfzhang.com/articles/1108.html

ANE-Facebook:https://github.com/freshplanet/ANE-Facebook

ANEList-master:https://github.com/zmLiu/ANEList

更多0
1

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

开发QQ互联ios版Ane扩展 辛酸史相关推荐

  1. 开发腾讯移动游戏平台SDK ios版Ane扩展 总结

    本文记录了在开发 腾讯移动游戏平台SDK(MSDK) ios版Ane扩展 过程中所遇到的问题 文中非常多问题都是基础的问题.对object c和xcode配置了解不深入导致的.(没办法,开发ane的程 ...

  2. 字典文件txt下载_QQ阅读软件下载-QQ阅读ios版下载

    QQ阅读包含海量热门小说内容,你想看的这都有!400万大神坐阵,为您书写全新世界:最新最热的影视剧同名小说,经典引人入胜的名著书籍,1000万册海量原著好书,尽在QQ阅读. 软件功能 1.流畅舒适的仿 ...

  3. 自己开发iOS版按键精灵--TTouch

    利用闲余时间,把之前的按键录制和播放整理了一些,开发了一个iOS版按键录制.播放的越狱APP,类似按键精灵.触动精灵等按键类的基本功能.脚本采用lua语法格式,可直接执行lua脚本,通过lua和obj ...

  4. ehviewer苹果版下载_苹果用户:支持ios的云手机有没有?在哪里下载云手机ios版?...

    云手机是近日十分热门的一个话题,云手机是一款全新的技术,可以将一台手机变成多台手机用.那么云手机有iOS版吗,iOS版的云手机在哪里可以下载到呢,下面简单普及下云手机ios版相关信息. 1,我们来看看 ...

  5. ios 输入法扩展_搜狗输入法 iOS 版开发与优化实践

    输入法是一种对性能要求极高的产品,不同于普通应用开发,很多在普通应用开发看来不是问题的,在输入法看来却是比较关键.同时,由于 iOS 系统的某些限制,输入法不得不在产品功能和性能方面做出调整,以尽可能 ...

  6. 无限互联iOS开发视频教程V2.0

    原文地址:无限互联iOS开发视频教程V2.0作者:天涯 视频网址: http://www.soku.com/t/nisearch/无限互联/_cid__time__sort_score_display ...

  7. Xamarin Mono For Android 4.10.01068 完整离线安装破解版(C#开发Android、IOS工具)

    Xamarin是由Miguel de Icaza成立的一家新的独立公司,目的是给Mono一个继续奋斗的机会.Mono for Android (原名:MonoDroid)可以让开发人员使用 Micro ...

  8. Xamarin Mono For Android 4.6.07004 完整离线安装破解版(C#开发Android、IOS工具)

    Xamarin是由Miguel de Icaza成立的一家新的独立公司,目的是给Mono一个继续奋斗的机会.Mono for Android (原名:MonoDroid)可以让开发人员使用 Micro ...

  9. iOS开发--iOS通知中心扩展制作入门(iOS Extensions)

    个人笔记: 通知中心扩展,相当于一个特殊的独立的App存在.他和主App之间通讯可以通过OpenURL来实现.而在通知中心内部,像App一样,该咋样还是咋样(如异步网络请求, 自动布局等).  之所以 ...

  10. 专访搜狗输入法 iOS 版开发负责人李腾杰:第三方输入法开发与优化实践

    输入法是一种对性能要求极高的产品,不同于普通应用开发,很多在普通应用开发看来不是问题的,在输入法看来却是比较关键.同时,由于 iOS 系统的某些限制,输入法不得不在产品功能和性能方面做出调整,以尽可能 ...

最新文章

  1. 语音识别框架最新进展——深度全序列卷积神经网络登场
  2. 神策数据《2022 中国企业数字化运营成熟度报告》发布
  3. Back Stub Period
  4. C4C销售订单中业务伙伴的自动决定功能Partner determination procedure
  5. 在控制台输出九九乘法表
  6. spring 事务隔离级别和传播行为_Java工程师面试1000题146-Spring数据库事务传播属性和隔离级别...
  7. 中英文对照 —— 音乐
  8. Java项目导出为jar包+导出第三方jar包+使用命令行调用+传参
  9. matlab图片插值数据_Matlab中的插值函数
  10. 刘济舟:《基于IAST交互式安全测试实践的初步探索》
  11. [电动智能汽车-3]:原理 - 整车控制器VCU功能
  12. android Drawable setbounds()介绍
  13. 年审是当月还是当天_年审年检7月当月审可以吗
  14. “滴滴出行” 成长路径分析(2016年01月19日)
  15. 物联网信号测试软件,物联网开关量信号采集 NPN转WIFI 检测计数器
  16. JAVA开发---微信文章留言功能实现
  17. 用unionID作为oneID的实质:不管理账号和密码
  18. 008-我的博友不锈钢钥匙扣上的随身金属外壳可启动U盘-20190413
  19. debian10.7-DLBD版本安装
  20. 互联网大会蓝皮书_世界互联网大会蓝皮书

热门文章

  1. #今日论文推荐#罗格斯大学王灏:保持孩子般的好奇心
  2. 阿里云ECS云服务器--安装部署MySQL(图文)
  3. Debug Error :abort() has been called 报错原因及解决方法
  4. RepeatMasker使用
  5. 中学计算机课体育课被占用,那些年被占用的体育课
  6. 怎么把win10退回win7系统
  7. 逍遥模拟器微信提示无法连接服务器,逍遥模拟器无法连接网络怎么办?
  8. IgA | 对抗病原菌,帮助共生菌定植的“重要开关”
  9. 校园网页设计成品 学校班级网页制作模板 大学生静态HTML网页源码 dreamweaver网页作业 简单网页课程成品
  10. 开口式霍尔电流传感器在数据中心直流配电改造的应用