środa, 31 lipca 2013

Programowanie gier na urządzenia mobilne przy wykorzystaniu Flash

Stencyl to narzędzie do tworzenia gier m.in dla systemu Android bez znajomości programowania.
Jest za darmo dostępny dla Windows i Linux.
Program posiada wbudowany edytor skryptów ActionScript (odmiana javascript, przeznaczona dla Flash)

Możemy tworzyć gry: przygodowe, labirynty, zręcznościowe, strzelanki a następnie  publikować je.

Po prostu układamy klocki : )




Druga propozycja to serwis Sploder w którym można wykreować swój świat przy pomocy technologii FLASH po prostu samodzielnie możesz stworzyć swoją planszę lub zagrać w testową grę a następnie ją opublikować.



Uprawnienia aplikacji

Jak dokonać zmianę uprawnień na poziomie deskryptora aplikacji.?
Edytując plik deskryptora najczęściej występuje pod nazwą application.xml. Ustawienia można znaleźć w znaczniku <android>

Przykładowa sekcja uprawnień w deskryptorze aplikacji

<android>
    <manifestAdditions>
    <![CDATA[
    <manifest android:installLocation="auto">
        <uses-permission android:name="android.permission.NAZWA_UPRAWNIENIA"/>
        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
        <uses-configuration android:reqFiveWayNav="true"/>
        <supports-screens android:normalScreens="true"/>
        <uses-feature android:required="true" android:name="android.hardware.touchscreen.multitouch"/>
        <application android:enabled="true">
            <activity android:excludeFromRecents="false">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>
                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>
            </activity>
            <activity>
            </activity>
        </application>
    </manifest>
    ]]>
    </manifestAdditions>
</android>


Dodanie uprawnienia dokonuje się przez dodanie kolejnej linii znacznika <uses-permission...
gdzie należy zastąpić fragment NAZWA_UPRAWNIENIA

Pełny zestaw dostępnych uprawnień dla manifest

Przykład

<uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCOUNT_MANAGER" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.BATTERY_STATS" />
<uses-permission android:name="android.permission.BIND_APPWIDGET" />
<uses-permission android:name="android.permission.BIND_DEVICE_ADMIN" />
<uses-permission android:name="android.permission.BIND_INPUT_METHOD" />
<uses-permission android:name="android.permission.BIND_REMOTEVIEWS" />
<uses-permission android:name="android.permission.BIND_WALLPAPER" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BRICK" />
<uses-permission android:name="android.permission.BROADCAST_PACKAGE_REMOVED" />
<uses-permission android:name="android.permission.BROADCAST_SMS" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.BROADCAST_WAP_PUSH" />
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.CALL_PRIVILEGED" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CLEAR_APP_CACHE" />
<uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />
<uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES" />
<uses-permission android:name="android.permission.DELETE_CACHE_FILES" />
<uses-permission android:name="android.permission.DELETE_PACKAGES" />
<uses-permission android:name="android.permission.DEVICE_POWER" />
<uses-permission android:name="android.permission.DIAGNOSTIC" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.DUMP" />
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
<uses-permission android:name="android.permission.FACTORY_TEST" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.FORCE_BACK" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.GET_PACKAGE_SIZE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.GLOBAL_SEARCH" />
<uses-permission android:name="android.permission.HARDWARE_TEST" />
<uses-permission android:name="android.permission.INJECT_EVENTS" />
<uses-permission android:name="android.permission.INSTALL_LOCATION_PROVIDER" />
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.MANAGE_APP_TOKENS" />
<uses-permission android:name="android.permission.MASTER_CLEAR" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_FRAME_BUFFER" />
<uses-permission android:name="android.permission.READ_HISTORY_BOOKMARKS" />
<uses-permission android:name="android.permission.READ_INPUT_STATE" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.READ_SYNC_STATS" />
<uses-permission android:name="android.permission.REBOOT" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.RECEIVE_MMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.REORDER_TASKS" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.SET_ACTIVITY_WATCHER" />
<uses-permission android:name="android.permission.SET_ALARM" />
<uses-permission android:name="android.permission.SET_ALWAYS_FINISH" />
<uses-permission android:name="android.permission.SET_ANIMATION_SCALE" />
<uses-permission android:name="android.permission.SET_DEBUG_APP" />
<uses-permission android:name="android.permission.SET_ORIENTATION" />
<uses-permission android:name="android.permission.SET_POINTER_SPEED" />
<uses-permission android:name="android.permission.SET_PROCESS_LIMIT" />
<uses-permission android:name="android.permission.SET_TIME" />
<uses-permission android:name="android.permission.SET_TIME_ZONE" />
<uses-permission android:name="android.permission.SET_WALLPAPER" />
<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS" />
<uses-permission android:name="android.permission.SIGNAL_PERSISTENT_PROCESSES" />
<uses-permission android:name="android.permission.STATUS_BAR" />
<uses-permission android:name="android.permission.SUBSCRIBED_FEEDS_READ" />
<uses-permission android:name="android.permission.SUBSCRIBED_FEEDS_WRITE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.USE_SIP" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_GSERVICES" />
<uses-permission android:name="android.permission.WRITE_HISTORY_BOOKMARKS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />









poniedziałek, 29 lipca 2013

System logowania - LOGCAT Eclipse, Trace FlashDevelop

Dziennik zdarzeń LOGCAT jest instalowany razem z SDK Android
Zdarzenia mają charakter: alarmujący-błędy systemowe lub informacyjny.
Przeglądanie logu aplikacji pozwala nam śledzić wykonanie programu np w przypadku gdy dany proces nie możemy podłączyć do debuggera.
Debugger nie zawsze pozwala nam na zlokalizowanie błędu.
Analizujemy wykonanie kodu przez metody, które znajdziemy w klasie dziennika aplikacji LOGCAT

Do logowania zdarzeń wykorzystujemy klasę android.uti.Log

poziomy zdarzeń

verbose
debug
information
warning
error

wszystkie możemy przechwycić przez parametr obiektu Throwable -czyli obiektu nadklasy wszystkich błędów i wyjątków.

W Eclipse, przechodzimy Window-> Show View -> Other -> Android-> Logcat.

W przypadku środowiska FlashDevelop wybieramy z menu View > Flash Log Viewer.
Wciskamy ikonę 'Start tracking’


Domyślnie śledzenie dziennika logów jest wyłączone.
Innym sposobem uruchomienia  z menu wybieramy Tool > Program Setting w sekcji z wtyczkami wybieramy FlashLogViewer opcję Misc - start tracking z menu rozwijanego wybieramy ‘onBuildComplete’

Publikowanie aplikacji AIR w Google Play

Google Play to oficjalny sklep dystrybucyjny oprogramowania. Sklep ten umożliwia szybkie wyszukiwanie i zakup produktu oraz przesyła programy i ich zdalną aktualizację.Sklep Google udostępnia także narzędzia do zarządzania sprzedaż swoich produktów, promocji, komunikacji między użytkownikami

Podejmujemy kroki

1.Zmieniamy zestaw ikon - aby m.in uatrakcyjnić wygląd np. ikony Launcher
2.Testowanie apkikacji
   -uruchomienie aplikacji na urządzeniach rzeczywistych i emulatorach
   -parametry: wydajnościowe, wersję systemu, konfigurację, typ ekranu
   -beta testerzy jeśli takich znajdziemy :). Sklep ten jest bardzo otwarty ponieważ nie stosuje żadnych   restrykcji i umożliwia użytkownikowi końcowemu wypróbowanie aplikacji przez 15 minut z możliwością pełnego zwrotu pieniędzy

3.Optymalizacja kodu

 -oczyszczenie lodu aplikacji ze wszystkich zbędnych zmiennych i wywołań związanych z diagnostyką, martwych fragmentów kodu

4.Grupa docelowych użytkowników (odbiorców) tzn; nie można ograniczyć się tylko do jednej wersji systemu

5.Wprowadzić kontrolę wersji oprogramowania.
Aplikacje Androidowe wersjonowane są poprzez wpisy w pliku AndroidManifest.xml

-kod wersji
-nazwa wersji

6.Każda aplikacja musi być podpisana cyfrowo

7.Opracowanie tekstu licencji - ustalenie zasad korzystania z produktu dla końcowego użytkownika

8.Zakładamy konto

Pozwoli nam udostępniać i sprzedawać nasze produkty
Pamiętaj !!! Jeśli połączymy konto Google z kontem Google Play nie będziemy już tego zmienić bez utworzenia nowego konta.

Logujemy się do GP podając nasz identyfikator następnie podajemy dane - naszą nazwę dostawcy oprogramowania, adres URL, telefon aż do otwarcia witryny Google Checkout

Wnosimy opłatę rejestracyjną wysokości 25$ i podpisujemy zgodę z Google -kontrakt, który reguluje zasady działania sklepu (zaakceptować warunki licencji)

9.Dla aplikacji określamy cenę, przypisujemy do kategorii, zaznaczamy pozycję zabezpieczania aplikacji przed jej kopiowaniem, zrzuty ekranowe dodajemy z naszej aplikacji - przynajmniej dwa zrzuty oraz ikonę w dużym formacie 512 x 512 px.
Do wgranych już aplikacji możemy obserwować ich ocenę przez użytkowników, inne parametry - licznik pobrań, przesyłane są do nas również zgłoszenia błędów.

Aplikacje mogą być darmowe i mogą również zarabiać na siebie a zyski pochodzą z wygenerowanych reklam. Sprzedać również możemy dodatki do gier, zdjęcia które mogą posłużyć jako awatary w aplikacjach komunikacyjnych.
Za każdą sprzedaż Google pobiera 30% jako prowizję.

Pamiętaj!!! Tylko po prawidłowym zbudowaniu pliku APK możesz opublikować aplikację w sklepie Google Play

Zasady opublikowania aplikacji AIR

1. Przygotować wersję finalną (release) aplikacji
2. Jeśli uprawnienie INTERNET, nie jest wymagane do poprawnego działania aplikacji to wyłączamy.
3. Zestwa ikon dołączony powinien mieć wszystkie standardowe rozmiary (36x36, 48x48, 72x72)
4. URL do środowiska AIR powinien wskazywać na Google Play.




sobota, 27 lipca 2013

Aplikacja PackageAssistantPro cz.2

Rozszerzając temat  postu "Aplikacja PackageAssistantPro"

Jeśli mamy już gotowy zestaw ikon (rozmiary) to umieszczamy ikony w folderze np o nazwie icons w zależności od tego jaka ścieżka została podana w deskryptorze aplikacji.

W systemie przewidziano mechanizm rozwiązujący problem zróżnicowania rozmiaru ekranów urządzeń poprzez zastosowanie klasy urządzeń dot. rozdzielczości. Parametry takie jak np rozmiar bardzo wysoki, wysoki, śred
ni, mały którym odpowiadają konkretne specyfikacje  np WQVGA400 dla średniej wielkości ekranu o niskiej rozdzielczości. Ustawienia te znajdują się w pliku AndroidManifest gdzie są wskazywane typy ekranów z jakimi pracuje nasza aplikacja także dotyczy to zestawu ikon, które zawarte w aplikacji powinny być umieszczane w odpowiednich folderach wskazując na rozdzielczość ekranu, dla jakiej aplikacja jest przeznaczona.



Poniżej przykładowy plik manifest z apka (opis aplikacji)

<?xml version="1.0" encoding="utf-8"?>
<manifest package="air.air.test2" android:versionCode="1000000" android:versionName="1.0.0" android:installLocation="auto"
  xmlns:android="http://schemas.android.com/apk/res/android">
    <application android:label="test2" android:icon="@drawable/icon" android:enabled="true">
        <activity android:theme="@android:style/Theme.NoTitleBar" android:label="test2" android:name=".AppEntry" android:excludeFromRecents="false" android:launchMode="singleTask" android:screenOrientation="nosensor" android:configChanges="keyboardHidden|orientation" android:windowSoftInputMode="stateHidden|adjustResize">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <meta-data android:name="aspectRatio" android:value="landscape" />
            <meta-data android:name="autoOrients" android:value="false" />
            <meta-data android:name="fullScreen" android:value="true" />
            <meta-data android:name="uniqueappversionid" android:value="8bae27c1-1785-4e62-84c0-f56b1fdad8f2" />
            <meta-data android:name="initialcontent" android:value="test2.swf" />
        </activity>
    </application>
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="5" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="true" />
</manifest>


Poniżej zawartość pliku -deskryptor aplikacji (XML) uwzględniający zestaw ikon

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://ns.adobe.com/air/application/2.5">
    <id>air.Aplikacja</id>
    <filename>Aplikacja</filename>
    <name>Aplikacja</name>
    <versionNumber>1.0.0</versionNumber>
    <initialWindow>
        <content>movie.swf</content>
        <aspectRatio>landscape</aspectRatio>
        <autoOrients>false</autoOrients>
        <fullScreen>true</fullScreen>
        <renderMode>gpu</renderMode>
        <title>Aplikacja</title>
        <visible>true</visible>
    </initialWindow>


    <supportedProfiles>mobileDevice</supportedProfiles>

    <android>

        <manifestAdditions><![CDATA[
            <manifest android:installLocation="auto">

                <uses-permission android:name="android.permission.INTERNET"/>

                <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

                <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

                <uses-feature android:required="true"
android:name="android.hardware.touchscreen.multitouch"/>

                <application android:enabled="true">

                    <activity android:excludeFromRecents="false">

                        <intent-filter>

                            <action android:name="android.intent.action.MAIN"/>

                            <category android:name="android.intent.category.LAUNCHER"/>

                        </intent-filter>

                    </activity>

                </application>

            </manifest>

        ]]
></manifestAdditions>

    </android>

   <icon>
        <image128x128>icons/appIcon_128.png</image128x128>
        <image48x48>icons/appIcon_48.png</image48x48>
        <image32x32>icons/appIcon_32.png</image32x32>
        <image16x16>icons/appIcon_16.png</image16x16>
    </icon>

    <fileTypes/>

    <version>1.0</version>

</application>



 Wczytanie pliku deskryptora aplikacji z zestawem ikon





wtorek, 23 lipca 2013

Integracja:- FlashDevelop i emulator ADV

Jeśli chcemy zintegrować emulator z SDK Android (AVD) w środowisku FlashDevelop to musimy najpierw uruchomić dołączonego do SDK managera 


Po wybraniu i zaktualizowaniu bibliotek SDK przyszedł czas na  uruchomienie emulatora z menu 'Tools' wybieramy 'Manage AVDs' tworzymy nowe wirtualne urządzenie z Androidem  (AVD)-> klikamy przycisk 'New'

Wypełniamy pola tak jak na poniżej załączonym screenie


AVD name - to nazwa emulowanego urządzenia z Androidem
Device - lista rozwijana typ urządzenia np Nexus
Target - lista rozwijana wybór systemu Android wybierz 4.1.2 - API Level 16 lub nowszy
CPU/ABI -
Keyboard -
Skin - skórka
Front/Back Camera -
Memory Options -
Internal Storage -
SD Card -
Emulation Options (Snapshot, Use Host GPU) -

Po konfiguracji uruchamiamy emulator wybieramy urządzenia i wciskamy przycisk 'Start'

Zobaczymy standardowy ekran ładowania systemu Android, a następnie ekran z wizerunkiem kłódki.
Po odblokowaniu ekranu będziemy mieli dostęp do podstawowych aplikacji jak Browser, Contacts lub E-mail. Obraz emulatora posiada domyślnie włączone wszystkie opcje programistyczne jak np debugowanie USB.

Następnie przechodzimy do lokalizacji "C:\Program Files\FlashDevelop\Tools\flexsdk\runtimes\air\android\emulator"

Kopiujemy 'Runtime.apk' i wklejamy do folderu Android SDK "platform-tools" i programem CMD Here z menu kontekstowego wybieramy "Open command line window here" przechodzimy do folderu  "platform-tools" i wykonujemy komendę adb install Runtime.apk
W ten sposób zainstalowaliśmy Runtime.apk na urządzeniu wirtualnym.

Sprawdzamy działanie emulatora komendą adb devices

C:\adt\adt\sdk\platform-tools>adb devices
List of devices attached
emulator-5554   device


Uruchamiamy środowisko FlashDevelop

Pliki konfiguracyjne
    Windows XP: C:\Document and Settings\<username>\Local Settings\Application Data\FlashDevelop
    Windows Vista / 7 / 8: C:\Users\<username>\AppData\Local\FlashDevelop

Jeśli nie pobraliśmy bibliotek SDK w trakcie konfiguracji środowiska należy
ręczna przeprowadzić instalacje bibliotek SDK
Konfigurujemy Flexa

Z menu wybieramy Tools -> Program Settings lub wciskamy F10
Z dostępnych wtyczek wybieramy AS3Context ustalamy lokalizacje bibliotek dla Flexa


Przechodzimy do folderu ..\bin
Flex ustali wersje podłączonej wersji SDK i z jakiej będzie korzystać wersji AIR




Uruchamiamy nowy projekt AIR Android AS3, aby to zrobić powinieneś ściągnąć ten plik
Jest to template do tworzenia projektów na urządzenia Android.

Template pochodzi z blogu Guave Studio Blog 
Plik "airandroidtemplate.fdz" należy uruchomić
Rozpakuje się archiwum


Po tym uruchomi się automatycznie środowisko FlashDevelop
Wybieramy Project -> new project -> AIR Android AS3




Edytujemy plik setting.bat znajdujący się w folderze scripts dostosowujemy do własnych ścieżek dostępu bibliotek SDK

@echo off
set PROJECT_NAME=Projekty
set PROJECT_ID=Projekty
set ANDROID_PATH_TOOLS="C:\adt\adt\sdk\tools"
set AIR_PATH_BIN="C:\AIRSDK_Compiler\bin"
set CERTIFICATE_FILE="SelfSigned.p12"
set CERTIFICATE_PASSWORD=test
set CERTIFICATE_CN=SelfSigned
set AIR_APP=../application.xml
set OUTPUT_PATH=../air
set OUTPUT_APK=%OUTPUT_PATH%/%PROJECT_NAME%.apk
set OUTPUT_AIR=%OUTPUT_PATH%/%PROJECT_NAME%.air

Generujemy certyfikat - wykonujemy skrypt CreateCertificate.bat
zostanie wygenerowany certyfikat o nazwie SelfSigned.p12 w folderze script

Ostatnim krokiem będzie wykonanie skryptu 'PackageApplication.bat'

Mogą pojawić się problemy z namespaces w deskryptorze aplikacji plik appliacation.xml
<application xmlns="http://ns.adobe.com/air/application/2.5"> w zależności od tego jaką wersje biblioteki AIR posiadamy.




sobota, 20 lipca 2013

Adobe Flash Player Debug i Flashbug dla Firefox

Istnieje wersja deweloperska dla Flash Playera aby to sprawdzić jaką mamy wersje klikamy prawym przyciskiem myszy na element flasha na stronie www i sprawdzamy, czy w menu kontekstowym widnieje opcja “Debugger”. Jeśli istnieje, to nasz Flash Player został zainstalowany w przeglądarce w wersji deweloperskiej.

Można również sprawdzić wchodząc na stronę producenta oprogramowania firmy Adobe

Flashbug to wtyczka do przeglądarki Firefox, która wymaga wcześniej instalacji innej wtyczki Firebug.
Należy pamiętać aby działało debugowanie dla pliku swf musi plik być uruchomiony w trybie Debug Mode









Dokładny opis narzędzia został umieszczony na Blogu CourseVector Blog


Używanie wbudowanego debugera w środowisku FlashDevelop

Debuger umożliwia śledzenie kodu aplikacji (funkcja trace), można uruchamiać i zatrzymywać aplikację, wyświetlić stos zawierający informacje o błęach, które wystąpiły podczas wykonywania aplikacji.

Debugowanie programu w środowisku FlashDevelop odbywa się przez wybranie opcji menu Debug  -> Continue lub klawisz F5 dla wskazanego projektu.Aplikacja zostanie uruchomiona, start może potrwać nieco dłużej, gdyż debugger wymaga do swojego działania dodatkowych zasobów.





Możliwości debugera:

  • podgląd stanu zmiennych 
  • podgląd wykonywania aktualnego wątku
  • zapis zdarzeń w środowisku wykonania
  • podgląd kodu, operacji na którym zostało zatrzymane
  • ustawienie tzw pułapki (breakpoint) w kodzie
     

Breakpoint tzn; pułapka ustawia się przez wciśnięcie klawisza F9 lub kliknięcie lewym przyciskiem myszy obok linii kodu.

wtorek, 16 lipca 2013

Deskryptor aplikacji - GUI ADM Application Descriptor Manager

ADM Application Descriptor Manager jest to narzędzie dla programistów aplikacji AIR które przedstawia deskryptor aplikacji od strony interfejsu GUI dla aplikacji AIR (1.0 do wersji 1.5.1).
Autorem aplikacji jest David Deraedt

Edytor ten usprawnia pracę nad plikiem deskryptora dzięki niemu możemy edytować właściwości ikon, wprowadzamy parametry nie znając składni XML. Poprzez interfejs GUI możemy budować plik deskryptora przez co znacznie zmniejszamy ryzyko wprowadzenia nieprawidłowych wartości, znacznie ułatwia nam pracę zarządzania ikony aplikacji dla urządzeń mobilnych.




Uwaga!!! Niestety aplikacja nie jest już od pewnego czasu rozwijana więc aby z niej korzystać będziemy musieli zmienić namespace na (tymczasowo do zapisu i zakończenia pracy w edytorze ponieważ  korzystamy z SDK więc do opublikowania aplikacji potrzebna będzie nam wersja którą aktualnie wykorzystujemy)

xmlns="http://ns.adobe.com/air/application/1.5" 



Każde pole tekstowe posiada ikonę podpowiedzi
Program automatycznie generuje ikony z jednego pliku graficznego
dlatego nie musimy wstawiać bloku z wieloma plikami np

    <icon> 
        <image16x16>icons/smallIcon.png</image16x16> 
        <image32x32>icons/mediumIcon.png</image32x32> 
        <image48x48>icons/bigIcon.png</image48x48> 
        <image128x128>icons/biggestIcon.png</image128x128>  
    </icon> 




W zakładce 'Initial Window' zaznaczamy opcję "Visible"



Dodatkowe składniki aplikacji z możliwością wygenerowania ikon.



Ostania zakładka 'File Preview' to podgląd pliku wyjściowego



Program tworzy kopię zapasową pliku deskryptora w trakcie zapisu zmian (auto backup)

piątek, 12 lipca 2013

Manymo testowanie aplikacji w chmurze

Manymo to serwis umożliwiający przetestowanie aplikacji dla systemu Android. Jego wielką zaletą jest możliwość wybrania takich elementów składowych emulatora jak wybór wersji systemu , rozdzielczości ekranu, możliwość uploadu aplikacji na serwer to wszystko korzystając z dobrodziejstw chmury.
Narzędzie to można zintegrować z  środowiskiem IDE Android Studio, Eclipse, Intellij IDEA.


Aby skorzystać z emulatora, musimy najpierw założyć konto. W tym celu wybieramy opcję "Sign up" (Zarejestruj się) na stronie głównej serwisu.



Po zarejestrowaniu się, możemy teraz uruchomić aplikacje Androida na swoim koncie Manymo. W tym celu wybieramy w prawym górnym rogu opcję "Launch With App" (Włącz z aplikacją).
Następnie wczytujemy plik Nazwa_pliku.apk.
Dokładny opis jak wykonać upload aplikacji i uruchomić na emulatorze znajdziemy na stronie w dziale dokumentacja



W następnej kolejności wybierzemy rozmiar ekranu, w jakim będzie działać emulator Android.

Rozdzielczości:




Jeśli wcześniej nie wybraliśmy w prawym górnym rogu opcji "Launch With App" to możemy to zrobić
przejść do strony



Manymo zapamiętuje przez nas używane aplikacje

Następnym razem po zalogowaniu się do serwisu nie musimy ponownie wgrywać pliku APK.
Serwis zapamiętuje używane przez nas programy które uruchomią się samodzielnie( zaraz po uruchomieniu Androida). Trzeba tylko wybrać opcję "Launch with: App".


Lokalizacja Polskich znaków
Custom Locale wybieram  pl_PL Polish przycisk Select


Niestety emulator dołączony do SDK jest mało wydajny.
Do minusów MANYMO to że emulator jest płatny. Na darmowym koncie do testowania aplikacji można skorzystać tylko z 10 bezpłatnych minut  i jednej sesji następnie od naszej woli czy chcemy  podnieść upgrade za stosowną opłatą do wersji pełnej czyli takiej która umożliwia korzystanie i testowanie aplikacji bez żadnych problemów. Wydajność też nie należy do mocnych stron MANYMO.
Do plusów wrzucamy prostotę i intuicyjną obsługę.

Ograniczenia
W wersji bezpłatnej emulator można uruchomić 10 razy w ciągu miesiąca
Free - 10 time-limited emulator launches, one at a time, per month

Kolejne ograniczenie to jeśli jesteś zalogowany na bezpłatnym koncie to możesz z niego korzystać przez 10 minut
Your emulator has reached its 10 minute limit and has been closed. Paying customers aren't time limited to 10 minutes.

Osiągnięto limit w czasie miesiąca. Konto zostanie wyzerowane 28 lipca
Your have reached your limit of 10 emulator launches per month. You can upgrade to launch emulators now, or wait until your limit resets on July 28, 2013.

Wybór subskrypcji możliwość podniesienia (wykupienia) 


Stan konta (użycia) w ciągu miesiąca



Rynek związany z testowaniem aplikacji w chmurze dopiero zaczyna się rozwijać. Z ostatnim pozytywnych newsów jest informacja związana z wejściem na Polski rynek firmy Testdroid.