这不是重复的问题,我将发布“已接受”答案对我不起作用的问题的链接。
几周以来,我一直在尝试为我的 Flex Android 应用程序集成第三方库,但没有成功。不幸的是,没有可靠的端到端文档。什么little Adobe 对此主题的记录至少可以说是不够的。
我正在使用的工具:
- ADT 在 Windows 7 上从命令行打包 ANE。
- Flash Builder 打包最终 APK(带有 flash 部分的 ANE)
我的 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 中的任何类时,我收到 NoClassDefFound 错误。我从 Eclipse 导出 Native Jar,如下所示:
我的疑问是,在组合这两个 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 项目中并尝试“运行方式”>“移动应用程序”时,它会出现以下错误:
然后,我将重命名 Android native 项目中的 strings.xml 文件,重新构建 ANE,以获取此错误:
如何让它发挥作用?在这两个解决方案之间,我尝试了无数种方法将两个 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 库),否则您不必更新构建工具。
关于android - 我的 Flex 应用程序的 Android native 扩展中包含 Adobe native 扩展 : How do I package third party libraries (. jar)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32777291/