ANE 的问题在于它不是一个完整的实现。最重要的是,ANE 没有实现默认的回退实现,如果当前平台没有特定的实现,设备将回退到的默认回退实现。
这使得 ANE 很难在跨平台开发中使用,因为它在某些情况下会失败。任何未明确包含的平台都将因您收到的消息而失败。
基本上,如果您自己不更改 ANE,您将无法按预期使用它。您唯一的方法是进行一些条件样式编译,而不是在模拟器中调用 ANE。
如果您确实希望更改 ANE,那么最好的选择是实现默认库。这很简单,但您需要:XCode、带有 Android 开发工具的 eclipse,以及来自 AIR SDK 的 adt。
首先,您需要编译现有项目,Android 库、iOS 库和现有的动作脚本库,以分别生成VibrationAndroidLibrary.jar、libVibrationiOSLibrary.a和VibrationActionScriptLibrary.swc。
然后,您需要创建另一个动作脚本库,并复制 com.adobe.nativeExtensions.Vibration 类,如下所示:
public class Vibration
{
public function Vibration()
{
}
public static function get isSupported():Boolean
{
return false;
}
public function vibrate(duration:Number):void
{
}
}
在未实现扩展而不是您收到上述消息的情况下,此类将替换其他类。
然后我们需要将默认定义添加到extension.xml文件中:
<extension xmlns="http://ns.adobe.com/air/extension/2.5">
<id>com.adobe.Vibration</id>
<versionNumber>1</versionNumber>
<platforms>
<platform name="Android-ARM">
<applicationDeployment>
<nativeLibrary>VibrationAndroidLibrary.jar</nativeLibrary>
<initializer>air.extensions.VibrationExtension</initializer>
<finalizer>air.extensions.VibrationExtension</finalizer>
</applicationDeployment>
</platform>
<platform name="iPhone-ARM">
<applicationDeployment>
<nativeLibrary>libVibrationiOSLibrary.a</nativeLibrary>
<initializer>ExtInitializer</initializer>
<finalizer>ExtFinalizer</finalizer>
</applicationDeployment>
</platform>
<platform name="default">
<applicationDeployment />
</platform>
</platforms>
</extension>
然后我们需要使用新的默认动作脚本 SWC 重新编译 ANE。假设您位于上述 ANE 的VibrationNEDeliverables目录中,您可以将其输入到 bash 文件中并运行它,或者将其全部放在命令行中的一行上)。前几行只是提取 library.swf 文件并将其移动到 package 命令所需的位置。请注意此处的路径等,我假设您已将默认库放在VibrationActionScriptDefaultLibrary中,但您需要适当地更改它。
unzip -o -d VibrationActionScriptLibrary/bin VibrationActionScriptLibrary/bin/VibrationActionScriptLibrary.swc
unzip -o -d VibrationActionScriptDefaultLibrary/bin VibrationActionScriptDefaultLibrary/bin/VibrationActionScriptDefaultLibrary.swc
cp VibrationActionScriptLibrary/bin/library.swf VibrationiOSLibrary/build/Release-iphoneos/.
cp VibrationActionScriptLibrary/bin/library.swf VibrationAndroidLibrary/bin/.
adt -package \
-storetype pkcs12 -keystore YOUR_SIGNING_KEY.p12 -storepass KEY_PASSWORD \
-target ane com.adobe.extensions.Vibration.ane VibrationActionScriptLibrary/src/extension.xml \
-swc VibrationActionScriptLibrary/bin/VibrationActionScriptLibrary.swc \
-platform iPhone-ARM -C VibrationiOSLibrary/build/Release-iphoneos . \
-platform Android-ARM -C VibrationAndroidLibrary/bin . \
-platform default -C VibrationActionScriptDefaultLibrary/bin .
完成后,您现在应该拥有一个带有默认库的新版本的 ANE,这将使其更有用!就我个人而言,我认为没有它就不应该发布 ANE。
如果您需要功能齐全的 ANE,可以查看我们的: http: //distriqt.com/native-extensions