0

创建使用以下 objC 代码的 Adob​​e AIR 本机扩展将在 iOS 5.1 中崩溃

NSDictionary *value=[NSDictionary dictionaryWithObjectsAndKeys: @"aSampleValue",@"aSampleKey",nil];    
NSLog(@"Try objectForKeyedSubscript: %@", [value objectForKeyedSubscript:@"aSampleKey"]);

它将失败并显示“[__NSCFDictionary objectForKeyedSubscript:]: unrecognized selector”

我现在使用 Method Swizzling 将 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 .
4

1 回答 1

0

我遇到了同样的问题,我通过使用-platformsdkADT 选项并将其指向 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
于 2013-09-03T10:54:15.100 回答