Air AdobeAne可以在iOS和Android设备上运行,但不能在空中模拟器上运行
Adobe提供的应用程序在iOS和Android上的Flex mobile应用程序中运行良好,但当我尝试在Windows 7上从Flash Builder 4.7启动空气模拟器时,我发现错误: 下面是后一个屏幕截图中错误消息的副本:Air AdobeAne可以在iOS和Android设备上运行,但不能在空中模拟器上运行,air,flex4,flash-builder,flex-mobile,air-native-extension,Air,Flex4,Flash Builder,Flex Mobile,Air Native Extension,Adobe提供的应用程序在iOS和Android上的Flex mobile应用程序中运行良好,但当我尝试在Windows 7上从Flash Builder 4.7启动空气模拟器时,我发现错误: 下面是后一个屏幕截图中错误消息的副本: Process terminated without establishing connection to debugger. The content cannot be loaded because there was a problem loading a
Process terminated without establishing connection to debugger.
The content cannot be loaded because there was a problem loading an extension: Error: Requested extension com.adobe.Vibration is not supported for Windows-x86.
Launch command details: "C:\Program Files\Adobe\Adobe Flash Builder 4.7 (64 Bit)\sdks\4.6.0 (AIR 3.5)\bin\adl.exe" -runtime "C:\Program Files\Adobe\Adobe Flash Builder 4.7 (64 Bit)\sdks\4.6.0 (AIR 3.5)\runtimes\air\win" -profile extendedMobileDevice -screensize 640x920:640x960 -XscreenDPI 326 -XversionPlatform IOS -extdir "C:\Users\xxx\Adobe Flash Builder 4.7\.metadata\.plugins\com.adobe.flexbuilder.project.ui\ANEFiles\MyApp-Mobile\win32\" C:\Users\xxx\Documents\MyApp\mobile\bin-debug\MyApp-app.xml C:\Users\xxx\Documents\MyApp\mobile\bin-debug
同时:
public function doSomethingThatWillUseANE():void
{
if (DeviceCapabilities.supportsANE) // static utility class
{
methodThatUsesANE();
}
}
private function methodThatUsesANE()
{
// execute actual ANE method here
}
public function doSomethingThatWillUseANE():void
{
if (DeviceCapabilities.supportsANE) // static utility class
{
// execute actual ANE method here
}
}
Adobe已使用64位支持更新了他们的解决方案。我过去使用的解决方案如下:
- 创建一个实用程序类,该类返回您是否在支持ANE的设备上运行。在我的例子中,该类包含一个静态方法,用于检查
的值。查看它可以返回的值列表Capabilities.os
- 将调用ANE方法的代码放入它们自己的函数中,如果支持ANE,则调用此函数。如果我没记错的话,有必要将使用ANE的代码放在一个单独的函数中,而不仅仅放在If块中,否则同样的错误会在模拟器中发生:
public function doSomethingThatWillUseANE():void
{
if (DeviceCapabilities.supportsANE) // static utility class
{
methodThatUsesANE();
}
}
private function methodThatUsesANE()
{
// execute actual ANE method here
}
public function doSomethingThatWillUseANE():void
{
if (DeviceCapabilities.supportsANE) // static utility class
{
// execute actual ANE method here
}
}
而不是像这样在一个函数中完成所有操作:
public function doSomethingThatWillUseANE():void
{
if (DeviceCapabilities.supportsANE) // static utility class
{
methodThatUsesANE();
}
}
private function methodThatUsesANE()
{
// execute actual ANE method here
}
public function doSomethingThatWillUseANE():void
{
if (DeviceCapabilities.supportsANE) // static utility class
{
// execute actual ANE method here
}
}
ANE的问题在于它不是一个完整的实现。最重要的是,ANE没有实现默认的回退实现,如果当前平台没有特定的实现,设备将回退到默认的回退实现 这使得ANE很难在跨平台开发中使用,因为它在某些情况下会失败。任何未特别包括的平台都会因您收到的消息而失败 基本上,如果不自己更改电子邮件,您将无法按预期使用它。唯一的方法是进行一些条件式编译,而不是在模拟器中调用ANE。 如果您确实希望更改ANE,那么最好的选择是实现默认库。这非常简单,但您需要:XCode、带Android开发工具的eclipse和AIRSDK中的adt 首先,您需要编译现有的项目,Android库、iOS库和现有的actionscript库,以分别生成颤音AndroidLibrary.jar、lib颤音IOSLibrary.a和颤音ActionScriptLibrary.swc 然后,您需要创建另一个actionscript库,并复制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>
一旦完成,你现在应该有一个新版本的电子邮箱和一个默认的库,这将使它更有用!就我个人而言,我不认为没有它就应该发布一个电子邮件
如果您需要一个功能齐全的电子设备,您可以查看我们的:为ios 64位兼容性而构建的最新振动电子设备也存在同样的问题。我的解决方法是将ane import语句放在实际调用振动方法的函数中,并在android和ios的项目构建路径设置中取消选中ane的include框 我的应用程序中有一个标志变量(由单独的函数设置),用于标记应用程序是否正在ide中运行。如果标志设置为非IDE模式,则使用振动的视图将仅调用上述振动功能。当我运行ide模拟器时,我仍然会收到一个初始警告,但不是严重错误。当我进行发布构建时,FlashBuilder会强制我在适用的项目构建路径设置中选中ane的包含框(下次要运行模拟器时,我必须再次取消选中)
它很笨重,但它使使用电子设备的工作变得宜居。adobe没有解决这个问题,这让我非常恼火谢谢米迦勒,我已经注意到你的ANES并考虑购买它们。你的手机支持黑莓吗?另外,为什么您的手机被列为不支持iPod Touch?我们还没有实施黑莓支持,实际上我们还没有收到任何这方面的请求。iPod Touch不支持振动,因为该设备中没有振动硬件。干杯我们的方法对我来说很有效,不需要在Xcode和Android Eclipse中重建任何东西:我从Adobe的
ReadyToUseExtension\com.Adobe.extensions.Vibration.ane
中提取了StribrationAndroidLibrary.jar
和libStribrationiosLibrary.a
。此外,我还省略了adt-command中的-storetype pkcs12-keystore YOUR_SIGNING_KEY.p12-storepass KEY_PASSWORD
部分。不幸的是,您的方法不适用于Adobe Vibration ANE。一个更好的解决方案-我刚刚签约了一个devlooper on upwork来添加一个“默认库”实现的振动电子…现在我可以使用它在调试模式没有问题。请随意使用它:您仍然可以使用默认的库Bernd获得振动ANE?Dropbox链接不再工作。我非常感激!我停止了应用程序,我的文件正在存档备份中。但是,如果我是你的话,我会选择distriqt vibration ane——只要10美元。穿着笨重的旧鞋帮到处乱跑毫无意义