Rahaa applikaatioilla

Hauskojen ja hyödyllisten applikaatioiden tuottaminen Androidille ei tarvitse olla pyyteetöntä työtä. Applikaatioilla voi myös pieni kehittäjä tehdä rahaa. Androidilla on kolme yleistä talousmallia, joilla voit tienata applikaatiollasi.

1) Maksulliset applikaatiot

Applikaatiolle voi asettaa hinnan, kun sen laittaa markettiin myyntiin. Ongelma on että suurin osa applikaatioista on saatavilla myös ilmaiseksi. Asiakaskuntaa voi kasvattaa tarjoamalla esimerkiksi rajoitetun version applikaatiosta ilmaiseksi.

2) Applikaation sisäiset ostokset

Harvalla yksittäisellä koodaajalla on mahdollisuutta perustaa omaa kauppaa, mistä applikaation käyttäjä voi ostaa applikaatioon uutta sisältöä. Mikrotransaktiot toimivat hyvin peleissä kuten League of Legends. Android market tukee applikaation sisäistä maksamista ja lisää tietoa löytyy Android developer -sivustolta. Google ottaa 30% maksusta.

3) Mainokset applikaatiossa

Google tarjoaa valmiita paketteja mainosten lisäämiseen applikaation AdMob yrityksen kautta. Tässä artikkelissa käsitellään, kuinka mainoksia saa lisättyä omaan applikaatioonsa. Tässä artikkelissa neuvotaan, kuinka voit lisätä mainoksia omaan Android-applikaatioosi.

Mitä tarvitset?

Valmis applikaatio marketissa. Tarvitset AdMob:lle applikaation nimen ja linkin apk-pakettiin, mieluiten muodossa market://details?id=<app.package.name>

AdMob käyttäjätunnus:

Aloita täältä: Google Mobile Ads

Tässä kohtaa ainoa hämmennystä aiheuttava kohta yksityiselle Android-kehittäjälle voi olla Business name -kohta. Kaikki nämä tiedot voi vaihtaa koska tahansa. Jos et osaa täyttää jotain kohtaa ja se on pakollinen voit laittaa siihen väliaikaisen tiedon, tämä on myös AdMobin oma suositus. Verotiedot voi jättää tässä vaiheessa tyhjäksi, mutta muista ilmoittaa verottajalle AdMoblta saamasi tulot.

Tämän jälkeen voit lisätä applikaation “Sites & Apps” valikosta. Applikaation tietoja täyttäessäsi voit lisätä keksityt tiedot aluksi, jos haluat vain ladata ja testata SDK:n lisäämistä applikaatioosi. Voit myöhemmin päivittää nämä tiedot, kun olet lisännyt applikaatiosi markettiin.

Tuottojen maksu:

Mainoksista saamiesi tuottojen maksuun suositellaan PayPalia Yhdysvaltojen ulkopuolella. Tulot on mahdollista saada myös suoraan tilillesi, mutta pankkisi saattaa periä ylimääräisiä kuluja kansainvälisistä tilisiirroista. Huomaa myös että tulot maksetaan dollareina ja pankkisi voi periä ylimääräisiä kuluja euroiksi muuttamisesta.

AdMob maksaa jokaisesta kerrasta, kun applikaatiosi mainoksia painetaan. Maksu vaihtelee monesta asiasta riippuen, mutta on joitakin senttejä per painallus.

AdMob SDK applikaatioosi

Tarvittavan SDK:n löydät täältä: http://code.google.com/mobile/ads/docs/
Samasta linkistä löytää tarvittavat ohjeet mainosten lisäämiseen. Käymme tässä läpi pääkohdat.

1) Lisää SDK applikaatioosi

2) Lisää Manifestiin

2.1) Mainos aktiviteetti:

<activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

2.2)

Lisää permissionit:

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

3) Lisää AdView layoutiisi

<com.google.ads.AdView android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adUnitId="YOUR_ADMOB_AD_UNIT_ID"
ads:adSize="BANNER"
ads:testDevices="TEST_EMULATOR,e78b974e6ab65648b52951e69edcb571"
ads:loadAdOnCreate="true"/>

TestDevices-atributtiin lisätään laitteen device ID ja tämän avulla saat testimainoksia laitteellesi. Poista tämä markettiin menevästä versiosta.

Tämä mainos ladataan heti, kun aktiviteettisi luodaan.
Voit itse ladata uuden sisällön mainosnäkymään:

AdView adView = (AdView) findViewById(R.id.adView);
adView.loadAd(new AdRequest());

4) ???

(Olet valmis, markkinoi applikaatiotasi sosiaalisessa mediassa)

5) Profit

Testaus Androidilla

Testaus yleisesti

Testaus, tuo ohjelmistokehityksen välttämätön paha. Testausta ei koskaan voi suorittaa täysin kattavasti, eikä ole ohjelmistoa, jossa ei olisi yhtään virhettä, paitsi ehkä Nasalla. Testauksella kuitenkin kasvatetaan merkittävästi ohjelmiston laatua ja viimeistään työelämässä tämä osa-alue on hyvä hallita.

Testaus, niin kuin kaikki muukin välttämätön epämukavuus on hyvä suorittaa kehityksen ohella, kuin sen jälkeen. On paljon helpompaa testata se mitä on juuri tehnyt, kuin kaikki mitä on tehty kehitysvaiheen aikana. Testaus kehityksen yhdeydessä  tekee koodista myös helpommin testattavaa. Jälkikäteen testattaessa voi hyvinkin olla mahdotonta tehdä testejä ilman koodin muuttamista.

Tässä artikkelissa käymme läpi Androidin testivälineitä ja -käytäntöjä.

Testit on hyvä suunnitella yksinkertaisiksi, toistettaviksi ja mahdollisimman vähän aikaa vieviksi. Hyvä ratkaisu tähän on testikoodi, jotka voi sitten vain ajaa tarvittaessa. Jokaista loppukoodin luokkaa kohden on hyvä tehdä oma testiluokkansa, joka testaa luokan julkiset metodit “riittävällä” testijoukolla. Hyvä nyrkkisääntö on, ettei testimetodeita ole koskaan liikaa, eikä yhden metodin kannata kaikkea tehdä.

Yksikkötestaus JUnitilla

Eclipseen tulee Android SDK:n mukana valmis wizard Android JUnit testiprojektien luomiseen. Yksityiskohtainen ohje JUnit testien tekemiseen ja ajamiseen löytyy developer.android.com sivustolta: Hello, Testing. Käymme muutaman yksityiskohdan läpi, oman testikoodin ja testisalkun avulla. Testisalkku on kokoelma testiluokkia, jotka suoritetaan peräkkäin. Jokaisen testiluokan voi suorittaa myös erikseen.

Android developers sivuston esimerkissä on huonosti mainittu, että testi projektiin pitää muistaa lisätä linkki testattavaan projektiin. Voit lisätä tämän projektin asetuksista (properties), “Java build path” valikosta, “projects”-välilehdestä. Tai testiprojektia luotaessa heti toisessa valikossa, joten muista painaa “next” äläkä “finnish”. Developer sivuston esimerkki on myös hiukan vanhemmasta Android SDK:sta, mutta sisältö on sama, vain luonti wizard on yksinkertaistunut.

- Testisalkku:

package fi.androidkehitys.esimerkkiapp.test; import junit.framework.Test; import junit.framework.TestSuite; public class AllTests { /** * Testisalkku, missä kaikki testiluokat lisätään. * @return Test */ public static Test suite() { TestSuite suite = new TestSuite(AllTests.class.getName()); suite.addTestSuite(EsimerkkiTesti.class); return suite; } }

Testisalkun voi ajaa suoraan “run as” ja “Android JUnit test”.

- Testiluokka:

package fi.androidkehitys.esimerkkiapp.test;

import fi.androidkehitys.applikaatio.MyActivity;
import java.util.List;
import android.test.ActivityInstrumentationTestCase2;

public class RSSTest extends ActivityInstrumentationTestCase2<MyActivity> {

    public RSSTest() {
        super("fi.androidkehitys.applikaatio", MyActivity.class);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();
    }

    /**
    * Testi metodi.
    *
    */
    public void testPotenssiMetodiOne() {
        assertTrue(“Metodi parametrillä 1 palautti väärän arvon”, potenssiMetodi(1) == 1);
    }
    public void testPotenssiMetodiTwo() {
        assertTrue(“Metodi parametrillä 2 palautti väärän arvon”, potenssiMetodi(2) == 4);
    }

    @Override
    protected void tearDown() throws Exception {
        getActivity().finish();
        super.tearDown();
    }
}

Testiluokan kaikki julkiset metodit ovat testi tapauksia ja suoritetaan testauksessa. Tässä testiluokassa ei tarvitsisi käyttää aktiviteettiä vaan tehdä yksinkertainen TestCase-luokan ilmentymä, mutta usein Android-metodit voivat tarvita kontekstin tai pääsyn resursseihin, joten yleisin yleisimmissä testitapauksissa tarvitset aktiviteetin parametrien käyttöön.

Aktiviteettien testaus on hiukan ongelmallisempaa yksikkötesteissä, koska view-komponenttejä ei saa käsitellä UI-säikeen ulkopuolella. Ratkaisu tähän on seuraavassa kappaleessa esiteltävä black box testaus ja Robotium framework.

Black box testaus Robotiumilla

Black box testauksella tarkoitetaan testausta, missä ei tarvitse pääsyä koodiin, vaan painellaan laatikon nappuloita. Robotiumille riittää päästä käsiksi applikaation .apk pakettiin. Black box testauksella pystyy tekemään monimutkaisiakin käyttötapaustestejä, mutta yksinkertaisuus on yleensä parempi tavoite sillä monimutkaiset testit alkavat kaatua pienilläkin muutoksilla.

Android tarjoaa rasitustestaukseen oman Monkey Runner:in, joka simuloi satunnaisia, mutta toistettavia painalluksia applikaation näyttöön. Tällä on kuitenkin mahdotonta testata jotain tiettyä tarkasti määriteltyä ominaisuutta applikaatiossa.

Robotium on voimakas työkalu Andoridin black box testaukseen. Sen käyttö ei vaadi kattavaa tietoa applikaation koodista ja käyttö on hyvin suoraviivaista. Robotiumilla voi ActivityInstrumentationTestCase2-luokkaan luoda Solo-olion, joka käyttää ja testaa käyttöliittymäelementtejä.

@Override
protected void setUp() throws Exception {
    super.setUp();
    solo = new Solo(getInstrumentation(), getActivity());
}

public void testLogin() {
    solo.clickOnButton("Kirjaudu sisään");
    assertTrue(solo.waitForText("Kirjautuminen epäonnistui", 1, 120000));
}

@Override
protected void tearDown() throws Exception {
    try {
        solo.finalize();
    } catch (Throwable e) {
        e.printStackTrace();
    }
    getActivity().finish();
    super.tearDown();
}

Kun Solo:lle on annettu Instrumentaatio ja aloitus-aktiviteetti voi navigoinnin applikaatiossa hoitaa kokonaan Solo:lla. Voit myös mennä toisiin aktiviteetteihin ilman ongelmia, jos testitapaus tätä vaatii.

Lisää JavaDoc Robotiumiin

Robotiumin käyttö helpottuu huomattavasti, kun lisäät JavaDocin Robotiumin lähdekoodiin. Sekä lähdekoodin, että JavaDocin voit ladata täältä (uusimmat tiedostot listan alapäässä). Eclipsessä testiprojektin asetuksissa (properties), Java Build Path, Libraries ja lisättyäsi Robotium Solo .jar tiedosto avaa se vasemmassa laidassa olevasta nuolesta, valitse Javadoc location ja paina edit. Tämän jälkeen valitse ulkoinen tiedosto ja etsi Robotium javadoc .jar ja lisää se archive pathiin. Nyt näet Robotiumin JavaDocit Eclipsessä.

iOS 5: Projektin luonti storyboardeilla

Apple on hiljattain julkaissut odotetun käyttöjärjestelmäpäivityksen, eli iOS 5. Mukana tuli läjä uusia API-rajapintoja ja ominaisuuksia, joista on paljon iloa ohjelmistokehittäjille. Yksi tärkeimmistä lisäyksistä on storyboard-tiedostot, joissa pystyy helposti määrittämään applikaation navigointilogiikan ja transitiot siirtymissä. Storyboardeja kannattaa kuitenkin toistaiseksi käyttää vain iOS5-käyttöjärjestelmille suunnitelluissa ohjelmissa, sillä storyboardit eivät toimi laitteissa joissa on vanhempi käyttöjärjestelmä. iOS 5 -laitteiden määrä kasvaa nopeaa tahtia, mutta menee vielä aikaa että kaikki ohjelmat olisi järkevää suunnitella iOS5:lle. Siitäkin huolimatta, että storyboardien käyttö ei ole vielä ajankohtaista, siihen kannattaa tutustua hyvissä ajoin. Continue reading iOS 5: Projektin luonti storyboardeilla