![](/img/trans.png)
[英]Failing to build Air iPhone app (with a iOS native extension) with adt
[英]AIR Native Extension failing on NSDictionary objectForKeyedSubscript in iOS 5.1
创建使用以下objC代码的Adobe AIR本机扩展会在iOS 5.1中崩溃
NSDictionary *value=[NSDictionary dictionaryWithObjectsAndKeys: @"aSampleValue",@"aSampleKey",nil];
NSLog(@"Try objectForKeyedSubscript: %@", [value objectForKeyedSubscript:@"aSampleKey"]);
它将失败,并显示“ [__NSCFDictionary objectForKeyedSubscript:]:无法识别的选择器”
我现在已经使用方法刷新将NSDictionary objectForKeyedSubscript:映射到valueForKey:(如果不存在),现在可以正常工作了,但是我对此解决方案并不满意。 必须有一个platform.xml选项或编译器标志,它不会剥离iOS 5.1中的这些函数调用,但我什么也找不到。 我的
注意:此问题可能看起来很像以下问题(以及其他一些问题,但我没有链接的代表),但这不是因为本机xCode项目能正常工作,而使用ADT编译的ANE却没有。
尝试失败了的事情:
眼镜
FlashBuilder / AIR: SDK3.7 ADT-版本:3.7.0.1530
xCode 项目 BaseSDK:6.1(最新)有效架构:armv7 armv7s部署目标:iOS 5.1
Platform.XML (由于具有其他一些支持要求,已经相当长了)
<platform xmlns="http://ns.adobe.com/air/extension/3.7">
<linkerOptions>
<option>-ObjC</option>
<option>-weak_framework Accounts</option>
<option>-framework AddressBook</option>
<option>-framework AddressBookUI</option>
<option>-weak_framework AdSupport</option>
<option>-framework CoreLocation</option>
<option>-framework CoreMotion</option>
<option>-framework CoreTelephony</option>
<option>-framework EventKit</option>
<option>-framework EventKitUI</option>
<option>-framework iAd</option>
<option>-framework MapKit</option>
<option>-framework MediaPlayer</option>
<option>-framework MessageUI</option>
<option>-framework OpenAL</option>
<option>-weak_framework PassKit</option>
<option>-framework StoreKit</option>
<option>-weak_framework Twitter</option>
<option>-framework UIKit</option>
<option>-lsqlite3</option>
<option>-lxml2</option>
<option>-lz</option>
</linkerOptions>
</platform>
ADT构建命令:
adt -package -target ane build/MyANEName.ane ANE/extension.xml -swc ANE/MyANEName.swc -platform iPhone-ARM -platformoptions ANE/platform.xml -C ANE/ios .
我遇到了同样的问题,我通过为ADT使用-platformsdk
选项并将其指向iOS 6.1 SDK来解决了该问题
在OSX上,它位于此处:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk
因此,将其添加到您的ADT命令中:
-platformsdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.