在目标平台上找不到应用程序所需的本机扩展“文件”的实现

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 所需的所有依赖二进制文件

LibVLCSharp:“无法加载所需的本机库。”

Kotlin 多平台移动 - 无法运行 iOS 项目 - 缺少此目标所需的一个或多个架构

为啥好多东西运行不了。出现“找不到所需的.dll文件?”

齿轮和齿轮扩展是不是仍在最新的 AIR 版本 32.0+ 中工作?

Google Maps Javascript API V3 在移动/本机应用程序上找不到 404