Adobe Native Extensions:如何在我的Flex App的Android Native Extension中打包第三方库(.jar)?

时间:2015-09-25 07:48:36

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

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

我已经尝试为我的flex Android应用程序集成第三方库几周了,但没有成功。遗憾的是,没有可靠的端到端文档。 Adobe已就此主题记录的little至少不足以说明这一点。

我正在使用的工具:

  1. ADT从Windows 7上的命令行打包ANE。
  2. Flash Builder打包最终APK(带闪存部分的ANE)
  3. 我的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没有任何错误。但是,当我在我的Flex项目中包含ANE并尝试运行为&gt;移动应用程序,它会给我这个错误:

    enter image description here

    然后我会在我的Android Native Project中重命名strings.xml文件,重新构建ANE,以获得此错误:

    enter image description here

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

1 个答案:

答案 0 :(得分:2)

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

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可以解决许多连接和调试问题。

您不应使用版本&gt; 20.0的Android构建工具。高于20.0的任何内容当前都存在AIR打包程序的问题。

如果您使用AIR 18+,则构建工具已更新至v20.0.0,除非您使用更多现代功能(例如android support v13 lib),否则您不必更新构建工具。

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