的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