проблема с ANE заключается в том, что это не полная реализация. Самое главное, что ANE не реализует реалистичную резервную реализацию по умолчанию, а именно то, что устройство отступит, если не будет конкретной реализации для текущей платформы.
Это делает ANE очень трудным для использования в кросс-платформенной разработке, так как в некоторых случаях это не удастся. Любая платформа, которая специально не включена, не сработает с полученным вами сообщением.
В принципе, без изменения ANE вы не сможете использовать его, как вы ожидаете. Ваш единственный способ - сделать некоторую компиляцию условного стиля и не называть ANE в симуляторе.
Если вы хотите изменить ANE, лучшим вариантом является реализация библиотеки по умолчанию. Это довольно просто, но вам понадобятся: XCode, eclipse с инструментами Android dev и adt из AIR SDK.
Во-первых, вам нужно собрать существующие проекты, Android Lib, Либерал IOS и существующей библиотеки ActionScript, чтобы генерировать VibrationAndroidLibrary.jar, libVibrationiOSLibrary.a и VibrationActionScriptLibrary.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
{
}
}
Этот класс заменит другой класс в тех случаях, когда расширение ISN» t, вместо того, чтобы вы получили сообщение выше.
Тогда нам нужно добавить определение по умолчанию в 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>
Тогда мы должны перекомпилировать АНХ, используя новый Actionscript по умолчанию SWC. Допустим, вы находитесь в каталоге VibrationNEDeliverables из упомянутого ANE, вы можете ввести его в файл bash и запустить его или поместить все в одну строку из командной строки). Первые две строки просто извлекают файл library.swf и перемещают его в места, необходимые команде пакета. Будьте осторожны с путями и т. Д. Здесь, я предположил, что вы поместили библиотеку по умолчанию в 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 .
После того, как это полная, теперь вы должны иметь новую версию АНХ с Lib по умолчанию, который сделает его более полезным! Лично я не думаю, что ANE должен быть выпущен без него.
Если вам нужен полнофункциональный ANE, вы можете проверить наши: http://distriqt.com/native-extensions
Спасибо, Майкл, я уже заметил ваши ANE и подумал о покупке их. Поддерживает ли ваша Вибрация ANE Blackberry? Также почему ваш Вибрационный ANE указан как не поддерживающий iPod Touch? –
Мы еще не реализовали поддержку Blackberry, у нас на самом деле не было запросов на это. Вибрация не поддерживается на iPod Touch, так как в этом устройстве нет виброоборудования. Cheers – Michael
Ваш метод работал для меня без необходимости перестроить что-либо в Xcode и Android Eclipse: я извлек 'VibrationAndroidLibrary.jar' и' libVibrationiOSLibrary.a' из Adobe ReadyToUseExtension \ com.adobe.extensions.Vibration.ane'. Также я опустил '-storetype pkcs12 -keystore YOUR_SIGNING_KEY.p12 -повторить KEY_PASSWORD' часть команды adt. –