android - 我的 Flex 应用程序的 Android native 扩展中包含 Adob​​e native 扩展 : How do I package third party libraries (. jar)?

标签 android apache-flex air air-native-extension aapt

不是重复的问题,我将发布“已接受”答案对我不起作用的问题的链接。

几周以来,我一直在尝试为我的 Flex Android 应用程序集成第三方库,但没有成功。不幸的是,没有可靠的端到端文档。什么little Adobe 对此主题的记录至少可以说是不够的。

我正在使用的工具:

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

我的 ANE 目录结构:

enter image description here

我正在使用的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 中的任何类时,我收到 NoClassDefFound 错误。我从 Eclipse 导出 Native Jar,如下所示:

enter image description here

enter image description here

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

Question#2 :这里接受的答案讨论了创建一个平台选项 XML,它定义了所说的“打包依赖项”。看起来更符合逻辑。我尝试创建它,如上面的文件夹结构和我正在使用的 adt 命令所示。 “platform.xml”的外观如下:

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

起初,我在尝试构建 ANE 时收到“命名空间应该与 extension.xml 相同”错误,但在将它们都更改为“...../4.0”后,我可以构建 ANE没有任何错误。但是,当我将 ANE 包含在 Flex 项目中并尝试“运行方式”>“移动应用程序”时,它会出现以下错误:

enter image description here

然后,我将重命名 Android native 项目中的 strings.xml 文件,重新构建 ANE,以获取此错误:

enter image description here

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

最佳答案

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

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

如果您安装了 Android SDK 构建工具,则可以将 build-tools/x.x.x/lib/dx.jar 中的 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

关于android - 我的 Flex 应用程序的 Android native 扩展中包含 Adob​​e native 扩展 : How do I package third party libraries (. jar)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32777291/

相关文章:

java - OnSaveInstanceState 和 OnRestoreInstanceState 不在应用程序退出时保存

android - 压缩后 Xamarin Forms Android 图像方向发生变化

Android 创建 RSA 1024 .NET 兼容 key

css - Flex - 文本颜色的可见阴影

Android Facebook SDK - 以编程方式登录用户

java - WebOrb Java Enterprise 每台服务器或每 CPU 的大约成本是多少?

apache-flex - Flex移动手势事件: how to slide between 2 views like Google+ Mobile?

flash - 检查值是否为数字

javascript - 在没有内存泄漏的情况下在adobe air中使用js进行长轮询

sqlite - 使用来自数据网格的数据填充组合框,从 sqlite 数据库接收数据