sobota, 6 lipca 2013

Przygotowanie i instalacja aplikacji AIR na urządzeniu/emulatorze Android

Witam wszystkich,

To jest mój pierwszy post. Chciałbym na samym początku zaprezentować czym aktualnie się zajmuje i jakie tematy są w moim obszarze zainteresowań związanych z technologią FLASH oraz udostępnianiem aplikacji na platformę Android.

Aktualnie zajmuje się wdrażaniem i administracją systemów informatycznych. - to chyba wystarczy na początek zainteresowane osoby odsyłam do podglądu mojego profilu.

Do wspomnianego już tematu użyjemy darmowego środowiska FlashDevelop 

Aby opublikować aplikację FLASH przy użyciu Adobe Air dla urządzeń mobilnych z systemem
Android należy sprawdzić zaraz po zainstalowaniu FlashDevelop czy automatycznie zostały pobrane wszystkie potrzebne składniki SDK. Jeśli nastąpiły problemy z automatycznym pobraniem środowisk należy ręcznie zainstalować tzn pobrać pakiety i rozpakować do folderu z uprawnieniami do zapisu.Po rozpakowaniu SDK należy ustawić w preferencjach IDE FlashDevelop prawidłowe ścieżki.

Sprawdzamy poprawność ścieżek do środowisk SDK. 
Project->Properties zakładka SDK przycisk Manage


W naszym przypadku jest to SDK wersji Flex 4.6 i Air 3.5


Pozostał nam SDK Android, który powinien znajdować się
C:\Program Files\FlashDevelop\Tools\android (platforma tools -adb)
C:\Program Files\Android\android-sdk-windows

Można również ustawić z poziomu wiersza poleceń
set FLEX_SDK=C:\Program Files\FlashDevelop\Tools\flexsdk
set ANDROID_SDK=C:\Program Files\Android\android-sdk-windows

Metoda została również opisana krok po kroku w dokumencie, (AIR_Android_readme.txt) który generuje się po utworzeniu projektu  Air Mobile AS3 App. Po przejściu wszystkich kroków (punktów) w opisanym dokumencie chciałbym przedstawić w następnym poście metodę alternatywną.

Tworzymy nowy projekt
Wybieramy z menu  
Project -> New Project -> Air Mobile AS3 App




Po utworzeniu projektu w folderze bat powinny być dostępne następujące pliki bat


Do folderu bin musimy skopiować aplikację FLASH




Jeśli będziemy używać emulatora AVD lub Adobe AIR Debug Launcher to możemy ustawić w pliku run.bat
parametr rozdzielczości ekranu

SCREEN_SIZE=1080

Przechodzimy do Project->Properties zakładka Output i zmieniamy numer wersji platformy Adobe AIR na taki jaki będziemy używać.



Otwieramy deskryptor application.xml i w drugim wierszu zmieniamy numer wersji np AIR 3.5
<application xmlns="http://ns.adobe.com/air/application/3.5">;
 
Instalujemy sterowniki USB do podłączenia zewnętrznego urządzenia zatem pobieramy sterownik
lub wykorzystujemy emulator Androida dołączonego do SDK, który symuluje uruchamianie aplikacji oraz przetestowanie jej do warunków zbliżonych do tych jakie uzyskujemy w urządzeniu połączonym z komputerem klasy PC za pomocą kabla USB. Jednak są ograniczenia związane z uruchomieniem emulatora na PC jest np. brak obsługi wielodotykowości, obracania (wykorzystuje się skróty klawiaturowe CTRL+F11, CTRL+F12).

W przypadku użycia telefonu/ tabletu użytkownicy muszą zainstalować dodatkowy pakiet dla obsługi połączenia przez USB.

Po stronie telefonu/ tabletu włączamy opcję "USB debugging"
Przechodzimy do Parameters > Applications > Development > USB Debugging
Pamiętaj że jednym z uprawnień, które jest włączone domyślnie, jest uprawnienie INTERNET, które jest wymagane do debugowania aplikacji przez połączenie USB - ważne jest aby przyznać te uprawnienie na czas tworzenia aplikacji. Aby ustawić uprawnienia z menu wybieramy Project-> AIR App Properties->
zakładka Mobile Additions




Można także ręcznie ustawić uprawnienia w deskryptorze aplikacji jednak należy wiedzieć jak modyfikować plik xml. Plik deskryptora aplikacji znajduje się w folderze głównym projektu i nosi nazwę application.xml. Plik ten posiada strukturę znaczników XML i podzielony jest na sekcję. Ustawienia dotyczące uprawnień występują w znaczniku <android>

Przykładowy zestaw dostępnych uprawnień Androida
 
<android>
    <manifestAdditions>
        <manifest android:installLocation="auto"><![CDATA[
            <uses-permission android:name="android.permission.INTERNET" />
            <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
            <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
            <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
            <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
            <uses-permission android:name="android.permission.SEND_SMS" />
            <uses-permission android:name="android.permission.GET_ACCOUNTS" />
            <uses-permission android:name="android.permission.WAKE_LOCK" />
           

       
    ]]></manifest>
</manifestAdditions>
</android>

Tworzenie certyfikatów podpisujących:
 Android wymaga, aby wszystkie aplikacje wdrażane były podpisane, ponieważ Google zajmuje się sprawdzaniem tożsamości wszystkich podmiotów sprzedających lub udostępniających bez opłat aplikacji na platformie Google Play.

Po podłączeniu urządzenia następnie generujemy- podpisujemy kod przez certyfikat - wybieramy opcję Execute uruchamiamy plik bat o nazwie CreateCertificate.bat. Certyfikat można wygenerować tylko raz dla projektu. Nie mogą istnieć dwa certyfikaty w jednym projekcie - zostaniemy poinformowani komunikatem you only need to generate this certificate once.
Domyślne hasło dla certyfikatu to fd. Certyfikat można wykorzystać do opakowywania aplikacji.



W folderze cert powinien pojawić się wygenerowany certyfikat p12 nazwa_projektu.p12

Kompilujemy projekt klawisz (F8)

W konsoli powinniśmy otrzymać komunikat:

Loading configuration file C:\Program Files\FlashDevelop\Tools\flexsdk\frameworks\airmobile-config.xml
Loading configuration file C:\flash\App_Android\obj\App_AndroidConfig.xml
obj\App_Android635087436047070432 (988 bytes)
(fcsh)Build succeeded
Done(0)

Wykonujemy Run/debug aplikacji  (F5 lub Ctrl+Enter)

Domyślnie konfiguracja jest przygotowana dla urządzenia "NexusOne"


Instalujemy na zewnętrznym urządzeniu biblioteki AIR runtime wykonując komendę - run 'bat\InstallAirRuntime.bat'

Jeśli nie włączyłeś opcji na urządzeniu USB Debugging to otrzymasz komunikat
error: device not found
- waiting for device -





Budujemy pakiet aplikacji apk i uruchamiamy w trybie debugowania  (Ctrl+Enter lub F5)
następnie uruchamiamy skrypt z folderu bat 'PackageApp.bat'

Wybieramy opcję nr 3 captive (apk-captive-runtime)


Wygeneruje się nam plik apk w folderze dist aplikacja zawierająca bibliotekę AIR runtime.


Efekt końcowy można zobaczyć Adobe AIR Debug Launcher lub skonfigurowanym emulatorze dostępnym z poziomu SDK.

Aby skorzystać z emulatora dołączonego do SDK uruchamiamy AVD Manager i tworzymy wirtualne urządzenie.

Instalujemy AIR Runtime Player na Android Emulator

1. Przechodzimy do "C:\Program Files\FlashDevelop\Tools\flexsdk\runtimes\air\android\emulator"
2. Kopiujemy "Runtime.apk" i wklejamy do folderu Android SDK  dokładniej do podfolderu "platform-tools"
3. Z poziomu platform tools uruchamiamy z linii CMD polecenie adb install Runtime.apk

i tym sposobem zainstalowaliśmy bibliotekę runtime na emulatorze AVD

To samo można uzyskać przez zastosowanie wiersza poleceń i wydania komendy

najlepiej dodać zmienną środowiskową PATH do środowiska SDK Adobe AIR
np; PATH=c:\adobeAIR\bin
   
adt -certificate -cn %NAME% 1024-RSA %CERTIFICATE% %PASSWORD%
adt -package -target %TYPE%%TARGET% %OPTIONS% %SIGNING_OPTIONS% "%OUTPUT%" "%APP_XML%" %FILE_OR_DIR%

lub w projekcie FlashDeveloper przechodząc do folderu dist command prompt (wiersz poleceń)

adb install -r AirTest-captive-runtime.apk


W ten sposób otrzymaliśmy w pełni opakowaną aplikację -uprawnienia, certyfikat i ikony.
Po takim przygotowaniu będziesz mógł używać Flash Develop do wykonywania wielu czynności związanych z przygotowaniem i wdrażaniem aplikacji z poziomu wykonywania skryptów bat dołączonych do środowiska.