我一直在尝试在Adobe AIR for Android中构建原生扩展,并偶然发现了一些问题。看起来配置或构建它的步骤有问题。
我已经创建了一个ANEBoilerplate项目,因此我可以深入了解问题的基础。这是我用它的测试代码:
package
{
import com.tomasz.boilerplate.BoilerplateAS;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
public class BoilerplateTest extends Sprite
{
public function BoilerplateTest()
{
super();
// support autoOrients
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
var ane:BoilerplateAS = new BoilerplateAS();
}
}
这是ANE [BoilerplateAS.as]的AS3方面的来源:
package com.tomasz.boilerplate
{
import flash.events.EventDispatcher;
import flash.external.ExtensionContext;
public class BoilerplateAS extends EventDispatcher
{
private var _extContext:ExtensionContext;
public function BoilerplateAS()
{
super();
_extContext = ExtensionContext.createExtensionContext("com.tomasz.boilerplate", "");
if(!_extContext) {
throw new Error("Boilerplate native extension is not supported on this platform.");
}
}
}
}
问题是我让_extContext等于null。
这是我的extension.xml:
<extension xmlns="http://ns.adobe.com/air/extension/19.0">
<id>com.tomasz.boilerplate</id>
<versionNumber>1</versionNumber>
<platforms>
<platform name="Android-ARM">
<applicationDeployment>
<nativeLibrary>classes.jar</nativeLibrary>
<initializer>com.tomasz.boilerplate.MainActivity</initializer>
<finalizer>com.tomasz.boilerplate.MainActivity</finalizer>
</applicationDeployment>
</platform>
</platforms>
</extension>
这是我的扩展目录的结构:
这就是我编译ANE的方式:
adt -package -target ane Boilerplate.ane extension.xml -swc BoilerplateAS.swc -platform Android-ARM -C Android-ARM .
我一直在OSX上使用JDK 1.7.0_79并使用Adobe AIR 21和Adobe AIR 19进行此操作。我对它们都有同样的问题。我也尝试使用JDK 1.8.0_91编译,但仍然是同样的问题。 JDK 1.6不可行,因为我需要更新SDK的Android功能。
有人可以告诉我,我可能做错了吗?有人可以编译这个源并使用它吗?我会感激任何帮助。