Category Archives: Debug

OUYA, Android-konsoli

Kesälomalta paluu sorvin ääreen voi olla raskasta tai hauskaa… Kesälomalla hankittujen lelujen kanssa siitä onneksi saa hauskaa.

OUYA on Kickstarter-rahoituksen avulla luotu Android 4.1 -konsoli, jossa pyörivät kaikki normaalit Android-applikaatiot ilman suurempaa vaivaa. Konsoliin saa helposti ladattua SDK:n, jonka avulla ohjainta voi käyttää applikaatioissaan, mutta hiirellä ja näppäimistölläkin voi konsolia suoraan käyttää.

OUYA ei ole kovin tehokas konsoli eikä pelitarjonta ole vielä kovin laaja, tätä artikkelia kirjoitettaessa vain 384 peliä, mutta 99$ hintansa puolesta se on hyvä hankinta arcade pelien pelaamiseen olohuoneen sohvalla kavereiden kanssa.

Yrityksille OUYA tarjoaa halvan ja helpon ratkaisun tarjota interaktiivista sisältöä asiakasnäyttöihin. Valmiin applikaation kääntäminen ja asentaminen OUYA:lle on hyvin helppoa. Kehittäminen OUYA-konsolille ei ole yhtään sen vaikeampaa kuin mille tahansa muulle Android-laitteelle. Toki pieniä muutoksia joudutaan tekemään käyttöliittymään, jotta normaalisti kosketusnäytölle tarkoitettua applikaatiota voi käyttää peliohjaimella tai hiirellä. Kosketusnäytön korvaaminen hiirellä tai muulla ohjaimella johtaa helposti hyvin heikkoon käyttökokemukseen.

 

Asentaaksesi minkä tahansa applikaation OUYA:lle pitää sinun voida ladata applikaation .apk-tiedosto Internetistä. Mene OUYA:n kotinäkymän MAKE-valikkoon ja sisäänrakennetulla Internet-selaimella lataa APK-tiedosto. Tämän jälkeen palaa päävalikkoon, mene MANAGE-valikkoon, valitse SYSTEM ja siellä valitse ADVANCED. Tämä on jokaiselle Android-käyttäjälle tuttu asetukset-valikko Androidissa. Mene listassa alaspäin ja valitse Storage, jonka sisällä valitse Download. Täältä löydät juuri lataamasi APK-paketin ja asentaminen onnistuu ohjaimen O-napilla. Tämän jälkeen applikaatio löytyy samasta MAKE-valikosta kuin OUYA:n Internet-selain.

Samaan MAKE-valikkoon tulevat myös applikaatiot, jotka itse kehität ja asennat tietokoneen ADB:n avulla microUSB:n kautta.

Kehittäminen OUYA:lla

Kaikki OUYA-konsolit toimivat applikaatioiden kehittämiseen ilman maksuja tai muutoksia konsoliin. Jotta saat OUYA:n toimimaan normaalissa Android-kehitysympäristössäsi Macilla sinun täytyy vain lisätä kolmannen osapuolen USB Hex ID (0x2836) adb_usb.ini -tiedostoon .android-hakemistossa ja käynnistää ADB uudelleen. Tarkemmat ohjeet myös Windows-koneille on katsottavissa videona OUYA developers -sivustolta. Tämän jälkeen OUYA-konsolisi näkyy Eclipsessä ja ADB:ssä samalla tavalla kuin mikä tahansa muu Android-laite.

Seuraavaksi lataa OUYA Development kit (ODK) osoitteesta https://devs.ouya.tv/developers/odk, kopioi libs\-hakemistosta ouya-sdk.jar ja lisää se omaan Android-projektiisi. Tämän jälkeen ohjaimen komennot saa kiinni oman Activity -luokkasi onKeyDown() ja onGenericMotionEvent() -metodeista.

Tein tätä artikkelia varten yksinkertaisen applikaation, joka käyttää ODK:ta siirtelemään ImageView:tä FrameLayoutin sisällä.

Ota ohjain käyttöön Activity-luokan onCreate()-metodissa:

@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	OuyaController.init(this);
}

Tunnista ohjaimen komennot:

@Override
public boolean onKeyDown(final int keyCode, KeyEvent event) {
	switch (keyCode) {
		case OuyaController.BUTTON_O:
			Log.d(TAG, "OUYA button O");
			break;
		case OuyaController.BUTTON_U:
			Log.d(TAG, "OUYA button U");
			break;
		case OuyaController.BUTTON_Y:
			Log.d(TAG, "OUYA button Y");
			break;
		case OuyaController.BUTTON_A:
			Log.d(TAG, "OUYA button A");
			break;
	}
	return true;
}
@Override
public boolean onGenericMotionEvent(final MotionEvent event) {
// Joystick
	if ((event.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) {
		float LS_X = event.getAxisValue(OuyaController.AXIS_LS_X);
		float LS_Y = event.getAxisValue(OuyaController.AXIS_LS_Y);
	}
	return true;
}

Tämän jälkeen voit tehdä ohjaimen antamilla komennoilla mitä itse haluat.
Koko koodin ja Eclipse projektin saat ladattua Githubista:
https://github.com/Androidkehitys/OUYA

Onnea pelikehitykseen! Palataan leikkimään telkkujen kanssa, kun Cromecast saapuu postissa.

Koodin virheiden jäljitys Androidilla

LogCat

Koosta riippumatta koodissa syntyy helposti virheitä ja näiden etsiminen voi olla välillä hankalaa. Java kuitenkin antaa hyvät virheilmoitukset siitä, mikä virheen aiheutti ja millä koodirivillä virhe tapahtuu. Nämä virheet näkee Eclipsessä helposti DDMS-näkymässä LogCat:llä. Voit myös lisätä koodiisi log-merkintöjä.

Vedä suosiolla LogCat aloitusasemastaan Eclipsen alareunasta isoksi, jotta voit paremmin lukea logia. Vasemmalla näkee tietokoneessa kiinni olevat puhelimet ja niissä käynnissä olevat ohjelmat, mikäli puhelin on asetettu debug-tilaan. Vihreällä plus merkillä voi lisätä filttereitä, jotka erottavat puhelimen logista tietyn ohjelman log-tiedot.

Virhelogi esimerkiksi null pointterin sattuessa näkyy samalla tavalla, kuin Javassa komentorivillä. Virheilmoitukset ovat selkeitä ja erottuvat hyvin ilman filtteröntiäkin. Vaikka virheilmoitus antaa pitkän stack tracen löytyvät omat luokat helposti eriävän pakettinimen avulla.
Jos ohjelmistosi kaatuu tulisi LogCatin olla ensimmäinen paikka, mihin mennä.

Debugger

Toinen kätevä työkalu koodin toiminnan seuraamiseen on Androidin Debugger, missä koodin suoritusta pääsee seuraamaan rivikohtaisesti. Projektin voi käynnistää puhelimella tai emulaattorissa “Run as” sijaan “Debug as Android application”. Tämä ei kuitenkaan yksin riitä, vaan ohjelmaan tulee asettaa break pointteja, joissa koodin suorittaminen pysähtyy ja voit edetä koodissa rivi kerrallaan.

Breakpointit saa asetettua koodi näkymässä rivinumeroiden vasemmalla puolella olevaan pieneen tyhjään tilaan joko tuplaklikaamalla tai hiiren oikealla painikkeella ja valitsemalla “Toggle Breakpoint”


Tämän jälkeen ohjelmaa ajettaessa koodin suoritus pysähtyy tälle riville ja Debug-näkymä Eclipsessä aukeaa. Tässä näkymässä näkee kätevästi muuttujien sen hetkiset arvot ja F6-näppäimellä voi edetä koodia rivi kerrallaan. Mikäli suorituksessa haluaa mennä johonkin metodiin sisälle tulee tämän metodin kohdalla painaa “Step into” eli F5-näppäintä. Debug-näkymän oikean ylälaidan ikkunasta löytyvät myös napit koodissa etenemiseen. Breakpointteja pystyy lisäämään ja poistamaan suoritusaikana ja tämä antaa mukavan vapauden katsoa suoritettavan koodin eri kohtia. Tämä auttaa esimerkiksi väärien arvojen syntymisen jäljittämisessä.