Adobe 本机扩展:如何将第三方库 (.jar) 打包到我的 Flex 应用程序的 Android 本机扩展中?

Adobe Native Extensions: How do I package third party libraries (.jar) in a Android Native Extension for my Flex App?

不是一个重复的问题,我将post链接到'accepted'答案对我不起作用的问题。

几周来,我一直在尝试为我的 flex android 应用程序集成 第三方库,但没有成功。不幸的是,没有可靠的端到端文档。 little Adob​​e 关于该主题的记录至少可以说是不够的。

我使用的工具:

  1. ADT 从命令行打包 ANE Windows 7.
  2. Flash Builder 打包最终的 APK(ANE 与 flash 部分)

我的 ANE 目录结构:

我正在使用的ADT命令:

<Adt path>\adt -package -storetype PKCS12 -keystore ./cert.p12 -storepass <password> -target ane myane.ane ./build/ane/extension.xml -swc ./build/ane/*.swc -platform Android-ARM -platformoptions platform.xml -C ./build/ane/Android-ARM/ . -platform Android-x86 \ -C ./build/ane/Android-ARM/ .

以下是我参考过但对我不起作用的关于 Stack Overflow 的几个问题:

Question#1:可接受的答案是使用 java 中的 JAR 工具简单地组合两个 JAR 文件。它对我不起作用,我在尝试访问 ThirdPartyJar.jar 内的任何 class 时收到 NoClassDefFound 错误。我像这样从 Eclipse 中导出我的 Native Jar:

我的疑问是,在组合这两个 JAR 时 我在哪里定义依赖关系?JAR 的简单组合如何为接受答案的其他人工作?

Question#2 :此处接受的答案讨论了创建平台选项 XML,它定义了上述 'packaged dependency'。似乎更符合逻辑。我尝试创建它,如上面的文件夹结构和我正在使用的 adt 命令所示。 'platform.xml' 的外观如下:

<platform xmlns="http://ns.adobe.com/air/extension/4.0">
    <packagedDependencies>
        <packagedDependency>ThirdPartyJar.jar</packagedDependency>
    </packagedDependencies>
    <packagedResources>
    </packagedResources>
</platform>

起初,我在尝试构建 ANE 时遇到 'Namespace should be same as extension.xml' 错误,但在我将它们都更改为“...../4.0”后,我可以构建 ANE 而不会出现任何错误.但是,当我在我的 Flex 项目中包含 ANE 并尝试 运行 As > Mobile Application 时,它会给我这个错误:

然后我会在我的 Android 本机项目中重命名 strings.xml 文件,重新构建 ANE,得到这个错误:

如何让它工作?在这两种解决方案之间,我尝试了无数种方法将两个 JAR 打包在一起,但就是行不通!

使用平台选项方法的第二种方法是可用的最佳方法。

Android 和 AIR 的打包依赖项问题几乎总是由 AIR SDK 中的构建工具引起。旧版 SDK 中包含的版本不够新,无法使用 Google Play 库中的最新功能,也无法使用一些较新的 SDK。

如果您安装了 Android SDK 构建工具,那么您可以将 dx.jar 文件从 build-tools/x.x.x/lib/dx.jar 复制到同一文件中您的 AIR SDK 位于此处:

AIRSDK/lib/android/bin/dx.jar

您必须将 AIR SDK 中的那个替换为 Android 构建工具中的那个,而不是相反。

我也强烈建议您此时更新 adb。更新 adb 可以解决很多连接和调试问题。

您不应使用版本 > 20.0 的 Android 构建工具。任何高于 20.0 的版本目前都存在 AIR 打包程序问题。

如果您使用 AIR 18+,构建工具已更新到 v20.0.0,您不必更新构建工具,除非您使用更现代的功能(例如 android 支持v13 库)。

参考:http://airnativeextensions.com/knowledgebase/tutorial/5