Il il problema con l'ANE è che non è un'implementazione completa. La cosa più importante è che l'ANE non implementa un'implementazione di fallback predefinita, che è ciò a cui il dispositivo farebbe il fallback se non ci fosse una particolare implementazione per la piattaforma corrente.
Ciò rende l'ANE molto difficile da utilizzare nello sviluppo multipiattaforma poiché in alcuni casi non riuscirà. Qualsiasi piattaforma che non sia specificatamente inclusa fallirà con il messaggio che hai ricevuto.
Fondamentalmente senza modificare l'ANE da soli, non sarà possibile utilizzarlo come ci si aspetta. Il tuo unico modo è fare una compilation in stile condizionale e non chiamare l'ANE nel simulatore.
Se si desidera modificare l'ANE, l'opzione migliore è implementare la libreria predefinita. Questo è abbastanza semplice, ma avrai bisogno di: XCode, eclipse con gli strumenti di sviluppo di Android e adad da AIR SDK.
In primo luogo è necessario compilare i progetti esistenti, il lib Android, il lib iOS e la libreria ActionScript esistente, per generare VibrationAndroidLibrary.jar, libVibrationiOSLibrary.a e VibrationActionScriptLibrary.swc rispettivamente.
Avrete quindi bisogno di fare un'altra libreria ActionScript e duplicare la classe com.adobe.nativeExtensions.Vibration come di seguito:
public class Vibration
{
public function Vibration()
{
}
public static function get isSupported():Boolean
{
return false;
}
public function vibrate(duration:Number):void
{
}
}
Questa classe sostituirà l'altra classe nei casi in cui l'estensione isn' implementato invece di ottenere il messaggio precedente.
Poi avremo bisogno di aggiungere la definizione di default per il file diextension.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>
Poi abbiamo bisogno di ricompilare l'ANE utilizzando il nuovo SWC predefinita ActionScript. Diciamo che sei nella directory VibrationNEDeliverables dal già citato ANE, puoi inserire questo in un file bash ed eseguirlo o metterlo tutto su una riga dalla riga di comando). Le prime due linee estraggono il file library.swf e lo spostano nelle posizioni richieste dal comando package. Fai attenzione ai percorsi ecc. Qui, ho pensato che tu abbia inserito la lib predefinita in VibrationActionScriptDefaultLibrary ma dovrai cambiarla in modo appropriato.
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 .
Una volta che questo è completo ora si dovrebbe avere una nuova versione del ANE con un lib default che renderà molto più utilizzabile! Personalmente non penso che un ANE dovrebbe essere rilasciato senza di esso.
Se avete bisogno di un ANE completamente funzionale, è possibile controllare il nostro: http://distriqt.com/native-extensions
Grazie Michael, ho già notato i tuoi ANE e considero di acquistarli. La tua vibrazione ANE supporta Blackberry? Inoltre, perché la tua vibrazione ANE è elencata come non supporta iPod Touch? –
Non abbiamo ancora implementato il supporto Blackberry, in realtà non abbiamo ricevuto alcuna richiesta per questo. La vibrazione non è supportata su iPod Touch poiché questo dispositivo non ha hardware per vibrazione al suo interno. Cheers – Michael
Il tuo metodo ha funzionato per me senza dover ricostruire nulla in Xcode e Android Eclipse: ho estratto 'VibrationAndroidLibrary.jar' e' libVibrationiOSLibrary.a' da Adobe 'ReadyToUseExtension \ com.adobe.extensions.Vibration.ane'. Inoltre ho omesso la parte '-storetype pkcs12 -keystore YOUR_SIGNING_KEY.p12 -storepass KEY_PASSWORD' del comando adt. –