我正在尝试为iOS制作我的第一个ANE,我发现尝试编译.IPA文件时遇到了问题。
我得到的错误是:
目标平台找不到应用程序所需的原生扩展“XXX”的实现。
其中,'XXX'是我的ANE的包裹。
好吧,我使用Flash Build 4.6和AIR 3.2 SDK来编译一个包含我需要的所有功能的SWC文件。 我使用XCode编译一个包含所有Objective-C代码的.A文件。 两个文件编译得很好。 比我用ADT编译.ANE文件。它也工作得很好。
我的extension.xml文件似乎没问题:
<extension xmlns="http://ns.adobe.com/air/extension/3.1">
<id>XXX</id>
<versionNumber>1.0.0</versionNumber>
<name>ANE_NAME</name>
<platforms>
<platform name="iPhone-ARM">
<applicationDeployment>
<nativeLibrary>libExtension.a</nativeLibrary>
<initializer>ExtensionInitializer</initializer>
<finalizer>ExtensionFinalizer</finalizer>
</applicationDeployment>
</platform>
<platform name="default">
<applicationDeployment/>
</platform>
</platforms>
</extension>
同样,XXX是我的扩展程序包。 (例如:com.example.myANE)
我也在使用platform.xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<platform xmlns="http://ns.adobe.com/air/extension/3.1">
<sdkVersion>5.1</sdkVersion>
<linkerOptions>
<option>-ios_version_min 4.2</option>
</linkerOptions>
</platform>
使用以下代码编译ANE:
adt -package -target an MyANE.ANE extension.xml -swc MyANE.swc -platform iPhone-ARM -platformoptions platform.xml library.swf libExtension.a -platform default library.swf
一切都很好,我有一个ANE文件。
嗯,我正在进行的项目已经有4个其他的ANE,所以我不认为flash部分出了什么问题。但是当我使用ADT编译IPA时,我得到了错误。
任何人都有可以提供帮助的见解吗?
答案 0 :(得分:4)
编译ANE的代码不包括签名选项。 我的编译脚本与您的相似,但它包含以下参数:
-storetype pkcs12 -keystore mac.p12
如果要在Mac上进行编译,请不要使用Windows生成的.p12文件。 (反之亦然) 如果是这样,您应该能够看到iOS设备日志上的错误(有关未签名的ANE无法加载的内容)
另外,请记住每次编译.swc项目时都要提取library.swf。然后,您应该清理移动项目以包含新的ANE。
答案 1 :(得分:3)
你的ANE看起来很好,如果你最后得到ANE,我会说你正确地做了那部分。
您实际编译应用程序时很可能缺少-extdir选项。
adt -package
-target ipa-ad-hoc
-storetype pkcs12 -keystore YOUR_CERT.p12
-provisioning-profile YOUR_PROVISIONING_PROFILE.mobileprofile
myApp.ipa
myApp-app.xml
myApp.swf icons Default.png
-extdir extensionsDir
或者在FlashBuilder中,您忘记在“Build Packaging”下的设置中使用您的应用程序构建打包扩展。请查看此处了解更多信息:http://distriqt.com/post/815