在AIR 3中,与本地扩展支持有关的所有新热点话题中,我没有找到任何证实或否认在本地Android实现中包含和使用外部JAR文件的可能性的事情。
所有的示例基本上展示了连接内置Android API的能力。但是如果有人想使用数百个使它更加容易的库呢?当然这似乎是可能的。我将尝试概述我所做的,并希望有人能发现问题:
- 成功创建了本地Android库,使用来自第三方Android库XYZ的编译导入。
- 将Android项目导出为JAR文件。注意:引用的第三方JAR文件在jar文件内的/lib目录下。
- 成功创建了用于与本地Android库进行交互的ActionScript库(SWC)。
- 从SWC中提取的platform Android-ARM的library.swc、extension.xml、Android JAR文件,创建ANE包。
注意:已经尝试过将第三方库放在此处概述的文件结构中:http://help.adobe.com/en_US/air/extensions/WSf268776665d7970d-24823354 12ffea65006-8000.html#WSf268776665d7970d-6be13ace1308aaebeca-7fff。我认为这更适用于使用JNI或其他方式的运行时类型执行,因此该文章让我有点困惑。 - 在示例Flex Mobile项目中使用ANE。
- 在测试DroidX设备上构建并安装APK文件。
- 可以成功看到AIR应用程序在LogCat中加载(和跟踪语句)
"ActivityManager: Displayed com.me.androidapp/.AppEntry"
- 可以看到AIR应用程序通过运行时成功调用本地Android Java代码以实例化扩展和上下文。
"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应用程序(也包含第三方android库)中分离APK和Dex时,它似乎已经将第三方类包含在内了(不只是一个jar引用)。 当我对我的Flex APK进行相同的操作时,我发现只有自己的Java类加上Adobe的类,第三方的类似乎无处可寻。
我已经在Adobe论坛上发布了这个问题,但我想试试SO社区的智慧。谢谢。