这是不重复的问题,我会将链接发布到“已接受”的答案对我不起作用的问题。
我已经尝试为我的flex Android应用程序集成第三方库几周了,但没有成功。遗憾的是,没有可靠的端到端文档。 Adobe已就此主题记录的little至少不足以说明这一点。
我正在使用的工具:
我的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没有任何错误。但是,当我在我的Flex项目中包含ANE并尝试运行为&gt;移动应用程序,它会给我这个错误:
然后我会在我的Android Native Project中重命名strings.xml文件,重新构建ANE,以获得此错误:
我如何让它发挥作用?在这两个解决方案之间,我尝试了无数种方法将两个JAR打包在一起,但它只是不起作用!
答案 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),否则您不必更新构建工具。