Die Problem mit dem ANE ist, dass es keine vollständige Implementierung ist. Am wichtigsten ist, dass der ANE keine Standard-Fallback-Implementierung implementiert, auf die das Gerät zurückgreifen würde, wenn es keine bestimmte Implementierung für die aktuelle Plattform gäbe.
Dies macht den ANE sehr schwierig in der plattformübergreifenden Entwicklung zu verwenden, da er in einigen Fällen fehlschlagen wird. Jede Plattform, die nicht speziell enthalten ist, schlägt mit der Nachricht fehl, die Sie erhalten haben.
Grundsätzlich, ohne den ANE selbst zu ändern, können Sie ihn nicht so verwenden, wie Sie es erwarten. Ihre einzige Möglichkeit besteht darin, eine bedingte Stilkompilierung durchzuführen und den ANE nicht im Simulator aufzurufen.
Wenn Sie den ANE ändern möchten, ist es am besten, die Standardbibliothek zu implementieren. Dies ist ziemlich einfach, aber Sie benötigen: XCode, Eclipse mit Android-Dev-Tools und adt aus dem AIR SDK.
Zunächst müssen Sie die bestehenden Projekte, die Android-lib, die iOS lib und die vorhandene Actionscript-Bibliothek kompilieren, VibrationAndroidLibrary.jar, libVibrationiOSLibrary.a und VibrationActionScriptLibrary.swc jeweils zu erzeugen.
Sie werden dann eine andere Actionscript-Bibliothek vornehmen müssen, und die com.adobe.nativeExtensions.Vibration Klasse duplizieren, wie unten:
public class Vibration
{
public function Vibration()
{
}
public static function get isSupported():Boolean
{
return false;
}
public function vibrate(duration:Number):void
{
}
}
Diese Klasse wird die andere Klasse in Fällen ersetzen, wo die Verlängerung isn‘ t implementiert, anstatt dass Sie die obige Nachricht erhalten.
Dann müssen wir die Standard-Definition auf die extension.xml Datei hinzufügen:
<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>
Dann werden wir die ANE mit dem neuen Standard-Action SWC neu kompiliert werden müssen. Sagen wir, Sie sind in der VibrationNEDeliverables -Verzeichnis von der genannten ANE, können Sie dies in eine Bash-Datei eingeben und führen Sie es oder alles in einer Zeile von der Befehlszeile). Die ersten paar Zeilen extrahieren einfach die Datei library.swf und verschieben sie an die Stellen, die der Paketbefehl benötigt. Seien Sie vorsichtig mit den Pfaden usw. Hier habe ich angenommen, dass Sie die Standard-Lib in VibrationActionScriptDefaultLibrary gesetzt haben, aber Sie müssen dies entsprechend ändern.
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 .
Sobald das ist komplett Sie jetzt eine neue Version des ANE mit einem Standard-lib haben sollte, die es viel mehr nutzbar machen wird! Persönlich denke ich nicht, dass ein ANE ohne es veröffentlicht werden sollte.
Wenn Sie einen voll funktionsfähigen ANE benötigen, können Sie unsere Check-out: http://distriqt.com/native-extensions
Danke Michael, ich habe deine ANE schon bemerkt und erwäge sie zu kaufen. Unterstützt Ihr Vibration ANE Blackberry? Warum wird Ihr Vibration ANE nicht als iPod Touch unterstützt? –
Wir haben den Blackberry-Support noch nicht implementiert, wir hatten eigentlich keine Anfragen dazu. Die Vibration wird vom iPod Touch nicht unterstützt, da dieses Gerät keine Vibrationshardware enthält. Prost – Michael
Ihre Methode hat für mich funktioniert, ohne etwas in Xcode und Android Eclipse neu zu erstellen: Ich habe 'VibrationAndroidLibrary.jar' und' libVibrationiOSLibrary.a' aus Adobes 'ReadyToUseExtension \ com.adobe.extensions.Vibration.ane' extrahiert. Außerdem habe ich den '-storetypkcs12-keystore YOUR_SIGNING_KEY.p12 -storepass KEY_PASSWORD' Teil des adt-Befehls weggelassen. –