的ANE的问题在于它不是一个完整的实现。最重要的是ANE不实现一个默认的备用实现这是什么设备将退回到,如果没有当前平台特定的实现。
这使得ANE很难用于跨平台开发,因为它在某些情况下会失败。任何未明确包含的平台都将失败并显示收到的消息。
基本上没有改变ANE自己,你将无法像你期待的那样使用它。你唯一的方法是做一些有条件的样式编译,而不是在模拟器中调用ANE。
如果您希望更改ANE,那么最好的选择是实现默认库。这很简单,但您需要:XCode,eclipse和Android开发工具,以及AIR SDK中的adt。
首先你需要编译的现有项目,Android的lib下,iOS的lib和现有的动作库,生成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
{
}
}
这个类将替换情况下,其他类凡拓ISN”而不是你得到上述消息。
然后我们需要将默认定义添加到的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的VibrationNeleliverables目录中,您可以将其输入到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的新版本具有默认的lib,这将使它更可用!就我个人而言,我认为没有它应该被释放。
如果你需要一个功能齐全的ANE,您可以看看我们的:与IOS兼容64位内置最新的振动ANE存在http://distriqt.com/native-extensions
谢谢迈克尔,我已经注意到你的ANE,并考虑购买它们。您的振动ANE是否支持黑莓?此外,为什么您的振动ANE被列为不支持iPod Touch? – 2013-05-01 11:30:43
我们还没有实现Blackberry支持,实际上我们对此没有任何要求。 iPod Touch不支持振动,因为此设备没有振动硬件。干杯 – Michael 2013-05-01 23:43:32
您的方法对我来说无需在Xcode和Android Eclipse中重建任何东西:我已经从Adobe的ReadyToUseExtension \ com.adobe.extensions.Vibration.ane中提取出'VibrationAndroidLibrary.jar'和'libVibrationiOSLibrary.a'。此外,我省略了adt-command的'-storetype pkcs12 -keystore YOUR_SIGNING_KEY.p12 -storepass KEY_PASSWORD'部分。 – 2013-06-18 17:45:18