在目标平台上找不到应用程序所需的本机扩展“文件”的实现
Posted
技术标签:
【中文标题】在目标平台上找不到应用程序所需的本机扩展“文件”的实现【英文标题】:An implementation for native extension 'file' required by the application was not found for the target platform 【发布时间】:2012-08-07 06:06:45 【问题描述】:我正在尝试为 ios 制作我的第一个 ANE,但在尝试编译 .IPA 文件时发现了问题。
我得到的错误是:
在目标平台上找不到应用所需的本机扩展“XXX”的实现。
其中,“XXX”是我的 ANE 的包裹。
嗯,我使用带有 AIR 3.2 SDK 的 Flash Build 4.6 来编译一个 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 ane 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 时,我得到了错误。
任何人有可以提供帮助的见解?
【问题讨论】:
【参考方案1】:您用于编译 ANE 的代码不包括签名选项。 我要编译的脚本与您的相似,但它包含以下参数:
-storetype pkcs12 -keystore mac.p12
如果您在 Mac 上编译,请勿使用 windows 生成的 .p12 文件。 (反之亦然) 如果是这样,您应该能够在 iOS 设备的日志中看到错误(关于无法加载的未签名 ANE)
另外,请记住每次编译 .swc 项目时提取 library.swf。然后您应该清理您的移动项目以包含新的 ANE。
【讨论】:
【参考方案2】:你的 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 中,您忘记在“构建打包”下的设置中将扩展与您的应用构建打包在一起。在这里查看更多信息:http://distriqt.com/post/815
【讨论】:
以上是关于在目标平台上找不到应用程序所需的本机扩展“文件”的实现的主要内容,如果未能解决你的问题,请参考以下文章
如何安装在 windowsservercore Docker 映像上执行本机 C++ DLL/EXE 所需的所有依赖二进制文件
Kotlin 多平台移动 - 无法运行 iOS 项目 - 缺少此目标所需的一个或多个架构