随着围绕AIR 3中本机扩展支持的所有新宣传,我还没有找到一个确认或否认可以在原生Android实现中包含和使用外部JAR的东西。
所有这些示例基本上都展示了嵌入内置Android API的能力。但是,如果有人想要使用数百个库中的一个使其更容易呢?当然看起来这应该是可能的。我将尝试概述我所做的事情,也许有人会发现一个缺陷:
"ActivityManager: Displayed com.me.androidapp/.AppEntry"
"mye_native: MyExtension.initialize", "mye_native: MyExtensionContext.createContext"
E dalvikvm: Could not find class 'com.thirdparty.SomeClass', referenced from method com.me.nativeExtentions.MyExtensionFunction.call
有什么想法吗?它似乎应该以这种方式工作。
我注意到的一件事是,当我从我的纯Java Android应用程序(也有第三方安卓库)中分离APK和Dex时,看来第三方的类已包含在其中(不仅仅是一个jar参考)。 当我使用我的Flex APK做同样的事情时,我发现只有我自己的Java类和Adobe的,而第三方无法找到我能看到的。
我在Adobe论坛上发布了这个,但我想我会试试SO智囊团。谢谢。
答案 0 :(得分:5)
你必须将所有的罐子合二为一。像http://code.google.com/p/jarjar/或你自己的Ant脚本之类的东西会有所帮助。
编辑添加示例: 假设您的主扩展jar文件是extension.jar,并且您正在使用external.jar中的代码。然后,您可以使用Java jar工具将external.jar中的类放入extension.jar:
jar -xf external.jar
这会将.class文件解压缩到包文件夹中。如果顶级包是“com”,那么您可以使用以下命令将它们添加到extension.jar中:
jar -uf extension.jar com
(对外部jar中的每个顶级包重复第二个命令。)
答案 1 :(得分:3)
你也可以手动组合库jar,将它们变成zip文件(只需将它们重命名为.zip),然后将第3方库中的类复制到主文件夹中,然后将其重命名为.jar