Bada SDK bez IDE

Po wczorajszej nocy mogę zrobić mały poradnik jak odpalić z Bada SDK tylko symulator i kompilator bez konieczności używania ichnego IDE. Ja potrzebowałem tego pod Ubuntu, jako że IDE nie jest tak dobrze emulowane przez WINE i pisanie w nim jest mocno niewygodne. Dlatego właśnie postanowiłem podłączyć całą resztę pod Geany.

Kompilator
Pierwszą rzeczą po napisaniu kodu jest oczywiście kompilacja, dlatego najpierw trzeba opracować ten element pracy z Bada SDK. Wyciągnięcie potrzebnych poleceń jest dość proste, bo w konsolce Eclipse wszystko ładnie jest pokazane. Kompilator znajduje się w Tools/Toolchains/Win32/bin (względnie ARM zamiast Win32, jeśli chcemy kompilować na telefon), przyjmuje definicje -D_DEBUG -DSHP -DBUILD_DLL i dwa includy, katalog Include w Bada SDK i Include w projekcie.

Jeśli chodzi o linkera to wszystkie biblioteki znajdują się w Model/Wave_LP1/Simulator, przyjmuje parametr -share oraz biblioteki -losp_rt0 -llibc-newlib -lFOsp. Jeśli wszystko pójdzie dobrze to dostaniemy świeży plik exe gotowy do odpalenia w symulatorze. Kompilacji target, ani tym bardziej uruchamiania na telefonie przez kabel (przypuszczam, że się nie da) nie próbowałem.

Symulator
Tu już jest trochę trudniej, bo o ile g++ znam dobrze to symulator jest dla mnie nowością. Ogólnie symulator jest w Model/Wave_LP1/Simulator. Dzięki informacjom w tym wątku dowiedziałem, że poprawne wywołanie wygląda tak:

Simulator.exe -s PhoneShell.dll -d Generic.dbi -p 6200 -i 93bt1p123e --app-file=first.exe

Oczywiście za first.exe podstawia się nazwę swojej binarki. Z tym że to działa jeśli już kiedyś uruchomiliśmy swój projekt na Bada IDE i trzeba za każdym razem podmieniać plik exe na nowszy po kompilacji i zawartość katalogu /Res gdy jakiś plik zmienimy. Wszystko się znajduje w Model/Wave_LP1/Simulator/FS/Win32FS/Osp/Applications/93bt1p123e . Upewnij się też, że ten katalog istnieje, bo np. wersja 1.2.1 trzyma aplikacje w e142cuc2sv. Wtedy trzeba też zmienić parametr -i w wywołaniu symulatora.

Gdy już nasza aplikacja uruchomi się na symulatorze da się zauważyć brak pewnej rzeczy. Nie widać nigdzie wyjścia na AppLog. Ale to też się da zrobić, wystarczy wywołać netcat -l 6200, który będzie nasłuchiwał i wypisywał logi aplikacji.