Problem z ANE polega na tym, że nie jest to kompletna implementacja. Co najważniejsze ANE nie implementuje domyślnej implementacji awaryjnej, do której urządzenie by się zrezygnowało, gdyby nie było konkretnej implementacji dla bieżącej platformy.
To sprawia, że ANE jest bardzo trudna do użycia w tworzeniu wielu platform, ponieważ w niektórych przypadkach może zawieść. Każda platforma, która nie została specjalnie uwzględniona, nie powiedzie się z otrzymaną wiadomością.
Zasadniczo bez zmiany ANE nie można go używać zgodnie z oczekiwaniami. Twoim jedynym sposobem jest wykonanie kompilacji stylu warunkowego i nie wywoływanie ANE w symulatorze.
Jeśli chcesz zmienić ANE, najlepszą opcją jest zaimplementowanie domyślnej biblioteki. Jest to dość proste, ale będziesz potrzebować: XCode, Eclipse z narzędziami programistycznymi Androida i ADT z pakietu AIR SDK.
Po pierwsze musisz skompilować istniejące projekty, Android lib lib iOS i istniejącej biblioteki ActionScript, aby wygenerować VibrationAndroidLibrary.jar, libVibrationiOSLibrary.a i VibrationActionScriptLibrary.swc odpowiednio.
Będziesz wtedy musiał dokonać innego biblioteki ActionScript i powielać klasę com.adobe.nativeExtensions.Vibration jak poniżej:
public class Vibration
{
public function Vibration()
{
}
public static function get isSupported():Boolean
{
return false;
}
public function vibrate(duration:Number):void
{
}
}
Klasa ta zastąpi inną klasę w przypadkach, gdy ISN rozszerzenie” t zaimplementowano zamiast otrzymywania powyższego komunikatu.
Następnie musimy dodać definicję domyślnego do extension.xml pliku:
<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>
Następnie musimy skompilować ANE użyciu nowego domyślnego actionscript SWC. Powiedzmy, że znajdujemy się w katalogu VibrationNEDeliverables wspomnianej ANE, można go wprowadzić do pliku Bash i uruchomić lub umieścić wszystko w jednym wierszu z wiersza poleceń). Pierwsze kilka linii po prostu wyodrębnia plik library.swf i przenosi go do lokalizacji wymaganych przez polecenie package. Uważaj na ścieżki itp. Założę się, że ustawiłeś domyślną bibliotekę w VibrationActionScriptDefaultLibrary, ale musisz to odpowiednio zmienić.
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 .
Po ukończeniu powinieneś mieć teraz nową wersję ANE z domyślną biblioteką, co znacznie zwiększy jej użyteczność! Osobiście uważam, że ANE nie powinno się bez niej wydawać.
Jeśli potrzebujesz ANE pełni funkcjonalny, można sprawdzić nasze: http://distriqt.com/native-extensions
Dzięki Michael, już zauważyłem twoje ANE i rozważam ich zakup. Czy Twoja Wibracja ANE obsługuje Blackberry? Dlaczego na liście urządzeń Vibration ANE nie ma obsługi iPoda Touch? –
Nie wdrożyliśmy jeszcze wsparcia dla Blackberry, w rzeczywistości nie mieliśmy żadnych próśb o to. Wibracje nie są obsługiwane w iPodzie Touch, ponieważ to urządzenie nie ma w sobie sprzętu wibracyjnego. Pozdrowienia – Michael
Twoja metoda zadziałała dla mnie bez konieczności odbudowywania czegokolwiek w Xcode i Android Eclipse: Wyodrębniłem 'VibrationAndroidLibrary.jar' i' libVibrationiOSLibrary.a' z Adobe 'ReadyToUseExtension \ com.adobe.extensions.Vibration.ane'. Ponadto pominąłem '-storetype pkcs12 -keystore YOUR_SIGNING_KEY.p12 -storepass KEY_PASSWORD' część polecenia adt. –