99
Alkalmazásfejlesztés Google Android rendszerre
  • Dodo55
    #1
    Nemrég lett Androidos mobilom, 12 éves korom óta programozgatok így természetesen szeretnék nagyon gyorsan élni a lehetőséggel, hogy végre egy olyan telóm van, amire lehet normálisan fejleszteni.

    A Java eddig elég távol állt tőlem, bár nemrég tanultam C#-ot, de azért a kettő nem teljesen ugyanaz.
    Sajnos minden oktató jellegű anyag amit először találtam meglévő Java tudásra alapoz, főleg az API használatára koncentrál. Szerencsére azóta találtam egy tömör kis leírást, pont a magam fajták számára, akiknek már volt dolga sok más nyelvvel, de Java-val még nem, nagyjából összefoglalja az alapokat, amikkel már neki lehet állni Android fejlesztést tanulni: http://mobile.tutsplus.com/tutorials/android/java-tutorial/

    A másik kezdeti akadály előttem az Eclipse nevű szörnyeteg volt. Ez a hivatalosan támogatott IDE, tudásra jó is, de rettentően bugos, nehezen konfigurálható és átláthatatlan. Ez először annyira eltántorított, hogy alternatív megoldások után kezdtem nézni. Találtam is egy pár érdekest, de ezekről majd a vége felé.

    A megoldást végül az IntelliJ IDEA jelentette, mivel a 12-es verziója már ennek is rendelkezik WYSIWYG XML Layout szerkesztővel. Itt fontos megjegyeznem két dolgot:
    -A program Community Edition-je ugyan ingyenes, de a 12-es verziónak még csak az egyébként fizetős Ultimate verziója érhető el az Early Access Program keretein belül, Augusztus 2.-ig érvényes licensszel.
    -Ha fent van az Android SDK-n belül a 4.1 API16 SDK Platform, akkor a layout szerkesztő nem működik
    Link: http://confluence.jetbrains.net/display/IDEADEV/IDEA+12+EAP

    Mint mondtam, utánanéztem alternatív lehetőségeknek is. Annyi van belőlük mint az állat, igazából a bőség zavara miatt egyiket sem próbáltam igazán ki. Nagyrészt JavaScript-el programozható frameworkök vannak, illetve hallottam olyanról is még régebben amivel egy komplett PHP-s webalkalmazás csomagolható be Android alkalmazásként. Ezeknek van még annyi előnyük, hogy sok közűlük az Androidon kívül más mobilplatformokkal is kompatibilis. Mindenesetre azzal bizonyára számolni kell ilyen keretrendszerek esetében, hogy az ezekkel készített alkalmazások lassabbak lesznek a natívakhoz képest, ezért is fordultam inkább vissza még kutakodni a neten leírások és megfelelő IDE után.

    Nem sorolom fel őket egyenként itt egy lista(táblázat) a Wikipediaról: http://en.wikipedia.org/wiki/Multiple_phone_web-based_application_framework

    Amit még itt megemlítenék, az a Xamarin MonoDroid, Visual Studioval vagy MonoDevelop-al lehet vele C# nyelven Androidra fejleszteni, elvileg natív kódot generál, az egyetlen baj vele csak az hogy fizetős. Más C#-os megoldást eddig nem találtam, de ha valaki tud valami ingyenesről plz szóljon.



    A sima Android topicban már feldobtam amúgy a topic ötletét, pár fejlesztő fel is bukkant, így értelmét láttam megnyitni, valószínűleg az alapvető dolgok megtanulása után lesznek majd kérdéseim, a későbbiekben pedig valószínűleg én is tudok majd másoknak segíteni, úgyhogy bízom benne lesz neki létjogosultsága.
  • [HUN]FaTaL
    #2
    "A másik kezdeti akadály előttem az Eclipse nevű szörnyeteg volt. Ez a hivatalosan támogatott IDE, tudásra jó is, de rettentően bugos, nehezen konfigurálható és átláthatatlan"

    Ez nem igaz, időt kell szánni a configurálásra.

    "agyrészt JavaScript-el programozható frameworkök vannak, illetve hallottam olyanról is még régebben amivel egy komplett PHP-s webalkalmazás csomagolható be Android alkalmazásként. Ezeknek van még annyi előnyük, hogy sok közűlük az Androidon kívül más mobilplatformokkal is kompatibilis."

    És borzalmasan lassú.
  • Dodo55
    #3
    Igen azt írtam is hogy valószínűleg sebesség szempontjából meg vannak lőve, de nem próbáltam még őket csak körülnéztem mik a lehetőségek.
  • Dodo55
    #4
    Ja amúgy IntelliJ IDEA-val kapcsolatban meg nagy faszságot csináltam és írtam, most nézem és van Community Edition is az EAP programban :)

    Leszedem azt megnézem az is időkorlátos -e. Meg az Ultimate amúgy is lassú picit indulás után (valószínűleg a kövérsége miatt), a 11-es CE-vel nem volt ilyen amikor azt próbáltam.
  • nIsTv4n
    #5
    A topik jó ötlet. Fel is dobnék egy érdekes kérdést. JAVA esetén mindenki számára egyértelmű az egységbe zárás, setter/getter használat. Ezzel szemben megnézzük a developer.android.com oldalt, ahol az egyik performancia javító tanács az, hogy hagyjuk a setter/getter-t. Jobban belementem a témába, és úgy néz ki, az újabb JIT verziók (Ginger felettiek) esetén ez már nem helytálló, ugyanis végre inline függvényként kezeli a setter/getter-t. Ti melyiket használjátok a kódotokban, ha egyáltalán használtok objektumokat (feltételezem:) ). Én setter/getter párti vagyok, nem éreztem teljesítménybeli különbséget, bár fontos megjegyezni, próbálom az objektumaimat kordában tartani, kímélni a GC-t :)
  • [HUN]FaTaL
    #6
    Én getter/settert használok több okból is:

    - Később ha ellenőrizni kell valamit pl. a getterben (vagy sokkal gyakoribb a setterben), egyszerű példával élve mondjuk 0-t nem lehet átadni értékül, akkor sokkal egyszerűbb ott megcsinálni, mint akkor bohóckodni mint a 86 osztályban ahol már használtam a paramétert. Persze az IDE megcsinálja, de akkor is átláthatóbb
    - Legalapabb OOP elv az enkapszuláció. Ha minden public akkor mi a fenének OOP?
  • nIsTv4n
    #7
    Attól még az osztályoknak, objektumoknak lehet értelme, de inkább csak szintaktikailag, kód olvashatóságot javítja.
    Másik topikban írtad, hogy BlueStacks-et használsz. Létezik már belőle ICS verzió? Mikor utoljára használtam, még nem létezett, most viszont 4.0-ra kell fejlesztenem, így egyelőre csak a gyári emulátort tudom nyúzni. Távoli gépen fut az emulátor, nálam meg a fejlesztőkörnyezet, de így bukom a DDMS lehetőségét..
  • [HUN]FaTaL
    #8
    "Attól még az osztályoknak, objektumoknak lehet értelme, de inkább csak szintaktikailag, kód olvashatóságot javítja."

    Unitokhoz nem kell osztály.

    Bluestacks az GB, nincs ICS.
  • nIsTv4n
    #9
    JAVA-ban még sosem használtam unit-okat, valahogy kézenfekvőbb számomra az osztály, de ez lényegtelen is.

    Nektek egyébként gyorsabb az Intel-es emulátor, mint az ARM-es? Én sok különbséget nem veszek észre, se betöltésnél, se runtime..
  • [HUN]FaTaL
    #10
    JAVAban nincs unit, minden osztály, én általánosságban beszéltem.

    Nem gyorsabb semmivel nálam se.
  • Dodo55
    #11
    Milyen virtualizációs software-el futtatod az x86 emut?

    Nekem ha jól emlékszem VirtualBox-al kicsit gyorsabb amúgy, ja és ráadásul Prescott-2M P4-em van VT támogatás nélkül.
  • nIsTv4n
    #12
    VMWare-ben használom, virtualizáció nélkül, 2 giga rammal, egy processzor maggal. Össze sem lehet hasonlítani a sebességét az emulátoréval, sokkal gyorsabb, viszont egyelőre se WiFi se kamera nem működik nálam.
    Ráadásul pont a napokban érkezett belőle az ICS RC2.
  • YMan
    #13
    Arra nem gondoltatok hogy futtassátok egy gépen az x86os androidot? Egy sima Atom chippes netbookon nekem teljesen jól futott, az alkalmazást pedig dropbox-al pakoltam kényelmesen fel rá. Gyorsabb volt jóval mint a VirtualBoxos emuláció
  • [HUN]FaTaL
    #14
    Minek futtassak egy butább OS-t, ami nem erre a platformra való?

    BlueStacks gyorsabb az összesnél, kb 10x gyorsabb az emulátornál. És minden működik vele.
  • nIsTv4n
    #15
    Ráadásul ha valami megfelelően gyors virtuális gépen, érezhetően nem fog gyorsulni egy különálló gépen sem. Sőt - bár nem próbáltam - nem tudom egy külön telepített gépnél mennyire tudok variálni a felbontásokkal. Virtuális gépnél olyan felbontást választok boot előtt, amilyen akarok, a megfelelő DPI-vel. Most egy sima 4:3-as monitor, de főleg egy szélesvásznú hogy jelenítene meg 720x1280-as felbontást?

    Bluestacks nagyon pöpec, de hiányzik belőle az a fránya ICS. Nem találtam infót neten, nem tervezik megcsinálni az ICS verziót is? Külső okok miatt a projektem csak ICS-t támogathat..
  • [HUN]FaTaL
    #16
    Külön gépen semennyire nem lehet variálni a felbontást, a virtualboxot is egy órát tweakeltem, hogy legyen portrait mód, amikor még használtam.

    A BlueStacks eleve béta még, az ICS-t nem tudom. Én egyelőre örülök, hogy GB, mert az a legelterjedtebb és a telefonomon ICS van.
  • YMan
    #17
    Kipróbálom a BlueStacks-t mert nem ismertem még.
  • [HUN]FaTaL
    #18
    Tapasztalt valaki olyat, hogy a Developer Consoleon nem frissül a statisztika? Elvileg naponta kellene, de már két napja semmi, még mindig júl 25 (26-27 nincs, tehát 27 óta nem frissül) az utolsó.
  • [HUN]FaTaL
    #19
    Közben lefrissült, egy nap kimaradt, érdekes :)
  • Inquisitor
    #20
    "Most egy sima 4:3-as monitor, de főleg egy szélesvásznú hogy jelenítene meg 720x1280-as felbontást?"
    Remélem mondat második fele csak tévedés volt. :)
  • [HUN]FaTaL
    #21
    Nem hiszem. :)

    Ha állóra fejlesztesz akkor bizony akkora lesz a felbontás. Más kérdés, hogy lehet tesztelni kisebb felbontással, a képarányt megtartva, vagy az avdben a scalinget használva.
  • [HUN]FaTaL
    #22
    Ja 720x1280. Hát azért azt rengeteg monitor támogatja. Az 1080x1920 már nehezebb.
  • Inquisitor
    #23
    T. fejlesztő vegyen Pivot monitort? :D
    Múltkor láttam valami Androidos kütyüt bemutatni embert és más nem volt alapon egy falra csavarozott bazi nagy TV-t használt hozzá. Lövésem sincs, hogy oldotta meg az érintésvezérlést rajta, de ment.
  • [HUN]FaTaL
    #24
    Nekem pivot monitorom van, de attól az még csak 1050x1680 :D

    Egyszerűbb és olcsóbb a scaling is.

    Persze tudom fejlesztő tartson az összes telefonból és tabletből is 1-1 példányt :D
  • nIsTv4n
    #25
    Nem elírtam, csak a sajátomból indultam ki, ami nem pivot monitor, ott nem tudom elképzelni oldalra döntés nélkül :)
  • Sippie
    #26
    Üdv!
    Nem tudom valaki ásta már bele a témába, de szerintem az alkalmazás fejlesztés egyik fontos eleme a terméknek a jogvédelme is. Ha kiadok valami programot már alapból a névnek érdemes lenne utána nézni, hogy nincs-e levédve, illetve a saját termékem hogyan védhetem le. Ehhez ért valaki? Vagy lehet tudni hol találom a levédett termékek listáját online pl?
  • nagylzs3
    #27
    Levédett termékek listája: sehol nincs. Ez nem így működik. Volt szerencsém pár céggel levelezni akik fenyegettek bennünket a pereskedéssel. Volt közöttük olyan, ami a "theodolite" azaz "szögmérő" nevet védette le. Ami ugye egy köznév. Volt olyan is, aki egy Marlboro feliratra lett ideges - annak ellenére hogy ez nem a cigarettával, hanem a Marlboro nevű várossal volt kapcsolatban. Hasonló a "La Coste" esete is, ez is egy létező város Texas államban. Ennek ellenére meg kellett semmisítenünk a város nevéhez kapcsolódó lokálpatrióta termékeinket, mert a La Coste nevű francia cég be akart perelni bennünket.

    A szoftvereknél még rosszabb a helyzet, mivel ott a felhasználói felület kialakítására, egyes algoritmusok használatára is lehet szabadalmat bejegyeztetni. Legalábbis az USA-ban. (És valljuk be: ha valaki androidra fejleszt akkor a bevétel nagy része onnan jön.)

    A gyakorlatban ez úgy szokott megvalósulni, hogy ha "kis hal vagy" és nincs sok bevételed, és nem használsz egyértelműen védett márkanevet, akkor senki nem foglalkozik veled. Ha megfelelően sok bevételre teszel szert valamiből, akkor egy úgynevezett "jogvédő cég" előbb utóbb megtalál, és meg fog próbálni beperelni valami miatt. Welcome to America... Ugyan ez a szoftver szabadalmas, beperelős szokás nem annyira jellemző az EU-ban, de ott is megjárhatod vele.
  • ZilogR
    #28
    Arról lehetne némileg részletesebb infókat kapni, h hogyan jut el valaki addig, míg a Market-en tudja a saját termékét árulni?!?

    Hol lehet a letöltésekről/vásárlásokról statisztikákhoz hozzáférni?!?

    Milyen módszerek vannak a feltörések ellen?!

    Értelemszerűen a programfejlesztés megtanulása is egy befektetés és az embert érdekli, hogy egy ilyen befektetés mennyire lehet hasznot hozó - ilyen jellegű hozzászólások érdekelnek igazán!

    Előre is köszönöm!
  • [HUN]FaTaL
    #29
    Árulni Magyarországról sehogy. Csak ingyenes cuccot lehet feltenni (egyelőre, persze admob mehet bele).

    Statisztikák, feltöltés, stb.: link, egyszeri $25 díja van.

    Többi: android-sdk, és a developer.android.com
  • [HUN]FaTaL
    #30
    Persze a link a saját cuccaidra vonatkozik. A többi cucc pénzügyi és egyéb statisztikai adatai, nyílvánvaló okokból nem publikusak.
  • Vaxi
    #31
    itthonról nem lehet fizetős alkalmazást publikálni


    hogy mennyire hasznos? attól függ. a tudás soha nem haszontalan, viszont marketre készített programokból senki sem fog megélni. legalább is itthon nem.


    a megrendelésre készített progikkal már más a helyzet.
  • Sippie
    #32
    Na ezt nem értem, hogyhogy nem lehet fizetőset publikálni? Van már magyar android store, szóval kéne hogy működjön az eladás is.
  • [HUN]FaTaL
    #33
    Mi köze a magyar storenak az eladáshoz? Semmi. Nem lehet payware appot publikálni Magyarországról.

    "Jelenleg nem támogatjuk az eladói fiókokat erről a helyről. Ha már van Wallet-fiókja, kérjük, menjen a Wallet beállításainak oldalára az országbeállítás módosításához."
  • Sippie
    #34
    Paff... gondolná az ember akkor együtt jár a kettő.
  • zoliii
    #35
    Lassan már ott tartunk, hogy valakit lefényképeznek az utcán, és elindul egy arc felismerő program a facebookon, és ha fent van az illető, akkor bejelölöd! :D
  • ZilogR
    #36


    Ilyesmire gondolsz, ugye?!

    BTW:
    Marketre készített programokból senki sem fog megélni
    Ugye, ez is olyan kérdés, hogy egy kívülálló nem tudja megítélni, mit jelent a "megélni" egy programozó esetén.
    Pl.: Van egy 1USD-s alkalmazás, amit eddig letöltöttek ~30'000-en, ez levonva az 1/3-át, ami a Google-é (bennem van valami olyan infó, hogy 30%-ot gombol le), az 20eUSD, az Android 4-5 éve alatt ez olyan 4-5eUSD/év jövedelem. Ez sok vagy kevés egy "hobby-programozónak", aki szabad idejében, de elég ügyesen ír szoftvereket, de van rendes melója? Kb. 1M HUF/év. Ez valszeg sokaknak elfogadható, ha kb. 2-3 havonta bizgerél rajta valamit ;) hogy minél vonzóbb tudjon maradni továbbra is az adott terméke.

    Egy termék, amiből 4-5 év alatt adnak el ennyit, nem tűnik irreálisnak. 1USD pedig két harapás egy McD-s szendvicsbe, a piac pedig pár másodpercenként bővül egy újabb lehetséges vevővel...

    Én teljesen komolyan érdeklődöm, de kívülről látom ezt a világot, nagyon nem értem a működését és tapasztaltak, sőt, bennfentesek infóit várom! :)
  • Vaxi
    #37
    Magyar alkalmazásokra gondoltam
    itthon soha nem vennének meg ennyien androidos progit a marketről.
    az üzletet nem ez jelenti, hanem például megkeres egy cég, hogy készíts nekik androidra egy klienst a meglévő rendszerükhöz..
  • [HUN]FaTaL
    #38
    Az adót elfelejtetted levonni. SZJA-ra gondolok. Igen, külföldön nem divat adót csalni. Na szóval, vond le még a 20%-t minimum (de inkább többet, mert plusz járulékok meg ez meg az).

    És évi egy millió forint megélhetésnek lószar.
  • Sippie
    #39
    Inkább az a kérdés hogy itthonról hogyan lehet megoldani, hogy megkapd a zsét. Vannak egyéb marketek amik paypal számlára is kifizetnek, akkor onnantól meg azt csinálsz a pénzel amit akarsz, csak itthon ne legyél gyanús. Ha meg legálisan akarod, akkor egyéni vállalkozóként éri meg, magánemberként baszott sok az adó.
  • [HUN]FaTaL
    #40
    Hivatalosan a PayPal is bevétel, ugyanúgy adóznod kellene utána. Más kérdés, hogy szerintem senki nem ellenőrzi.