16. 7. 2011

Android.jar - zdrojové kódy pokračování

Tak je to v háji. Zkouším naprgat reálnou app a samozřejmě mi to padá na nějakou chybu. Takže debug, pár brakepointů a najednou zjišťuju, že připojené zdrojáky nesedí proti debugu. Takže zdrojáky přece jen nejsou úplně ta správná minor a bugfix verze.

Verze Android v telefonu 2.3.3.

Při spouštění z eclipse mám target 2.3.3 a spouštím přímo v telefonu.

Api level je 10 a tady asi bude kámen úrazu. Protože zdrojáky pro android.jar mám připojené z pluginu (viz  předchozí příspěvek) a ten rozlišuje jednotlivé sources.zip jen podle API level a to bude asi nedostatečné.

No teda co s timhle ???

Jdu pátrat..... kdyby někdo pomohl, budu vděčný.

EDIT: Zdá se, po dlouhém hledání, že jsem narazil na vysvětlení . Takže buď Samsung (mam Galaxy S2) opravdu mění zdrojáky a nebo je jen přeformátuje do jiného tvaru a je to v háji :-(.

Android.jar - zdrojové kódy

Zahájil jsem první pokus o vývoj aplikace pro Android. Jakožto letitý vývojář v Javě jsem neočekával vetší překážky na úrovni rozběhnutí vývojového prostředí. Eclipse IDE používám a tak ho znám jako svoje boty a doinstalováni ADT pluginu bylo dílem okamžiku. Nastavení platformy a spuštění samotného hello_word příkladu nebyl problém. Tož jsem zajásal a začal bližší průzkum. Řekl jsem si, že zkusím vytvořit Activity s ListView a do něj nějakých pár nesmyslných položek. Trivialita. Příkladů všude tuna. Použil jsem ArrayAdapter a dělalo to přibližně co jsem zamýšlel. Vida. Není to tak těžké. Mrknu jak vypadá zmíněná implementace ArrayAdapter, ať pořádně pochopím co jsem to vlastně stvořil.......

A bác ho. Nemám zdrojaky k android.jar. Heh, vždyť přece celej Android je open source, ne ? Chvilka googlení a potvrzuju svoji doměnku. Ale dostat se ke zdrojakům se mi nedaří. Vše směřuje na GIT repository a návody na "stáhni si sám a upeč src.zip". Tak jsem se do toho dal. GIT neznám a tak to bylo o dost obtížnější. Musel jsem o GITu nasát dost informací, abych byl vůbec schopen stáhnout kýžený projekt se zdrojáky.

Nakonec, asi po osmi hodinách moření dělám první GIT clone podle návodu na ofiko sajte http://source.android.com/source/downloading.html . Mám nějaký manifest a čumím na to jako vrána. V manifestu zachycena struktura různých projektů a dál s tim nehnu. Googlím, ale v podstatě se neumím zeptat. Pak mě napadne postahovat GITem pár okolních "projektů". Zkouším platform/dalvik.... ne to není to co hledám. Pak libcore... taky ne. Pak platform/framework/base.... bingo. Jsou tam java files pro namátkou vybrané class z android.jar.

A teď jak z toho bordelu upéct src.zip ? Potřebné java soubory jsou doslova roztříknuty po projektu "base" a ja netuším jestli to na 100% pokrývá moji knihovnu android.jar. Přesto trávím dost času a pokouším se o nemožné. Na konci mám v ruce src.zip a nabíjím ho do EclipseIDE. Po chvilce ale zjišťuju, že jsem zdaleka nepokryl celou knihovnu android.jar. Aaaaach jo :-(((

Nyní jsem už na problému strávil opravdu hodně času a nemám výsledek. Vracím se ke googlení. Teď už mě napadá jak se zeptat a nacházím: http://code.google.com/p/adt-addons/ kde konkrétně plugin Android Sources  http://adt-addons.googlecode.com/svn/trunk/source/com.android.ide.eclipse.source.update/ řeší k plné spokojenosti můj problém. Nainstaloval jsem do Eclipse, restartoval a android.jar byl automaticky napojen na E:/eclipse.3.7.rcp/plugins/com.android.ide.eclipse.source_11.0.0.201106122256/10/sources.zip, který ve spravné verzi pokrývá všechny třídy. Plugin má kolem 170MB a obsahuje pro každou verzi Androida jedno sources.zip. Hotovo.... Hotovej.....

Teda kluci ušatý to byla štreka.

BTW: tady http://code.google.com/p/android/issues/detail?id=979 je zajímavej ticket. Od roku 2008 a stále se čeká :-(

EDIT: tak uvedené řešení není ideální. viz: zdrojové kódy pokračování

3. 5. 2011

M-theory

Je to můj hobby projekt. Snažím se o vesmírný simulátor. V podstatě se jen snažím dokázat, že ne každý vesmírný simulátor musí být rozparcelován na "kostky", které obsahují severní, jižní, západní a východní bránu (jump gate) do okolních "kostek". Takhle je totiž řešena spousta "simulátorů" současnosti : X-neco, Freelancer atd. V těchto hrách je sice úžasná grafika, ale jde jen o "skybox" (předmalované pozadí s mlhovinami a hvězdami) a SJZV brány. Pokud se hráč vydá nějakým směrem a vylétne z pomyslné "kostky" může letět do alelůja a nikam se nedostane. Pro mě mega nuda.

Jsou ale i hry, které byly v tomto ohledu zpracovány parádně: stařičké Elite nebo novější, ale už taky dědeček, Frontier. Zmíněný Frontier se tedy nejvíce blíží mému snažení.

Pokud bych měl tedy vyjmenovat základní mechanismy M-theory:
  1. možnost několikanásobného zrychlení času v hře (ala Frontier)
  2. přistávání na planetách
  3. fyzikální model rakety
  4. působení gravitace velkých těles na raketu hráče
  5. možnost zaměřit/označit libovolnou hvězdu ve výhledu hráče a doletět k ní
Teď podrobněji k jednotlivým bodům:

Bod 1
Tady je to asi jasné. Jde o zpříjemnění herních mechanismů ve vesmíru. Nejsem masochista, abych letěl z planety na její měsíc v realtime několik hodin (podle toho jak nastavim výkon fiktivních motorů rakety)

Bod 2
Planety zatím plánuju generické. Tedy jejich povrch popisuje stabilní šumová funkce (Perlin, Ridget apod) a barevá škála pro heightmapu. Tohle je věc se kterou si teď hraju a počítám, že mám ještě na dlouhou dobu vystaráno. Pro lepší představu se snažím o něco takového:  Part1 Part2 . Další naprosto neskutečný projekt je Outerra (neskutečná ukázka). O tom jak se mi to daří nebo spíše nedaří se lze přesvědčit zde.

Bod 3
S fyzikou bych to úplně nepřeháněl. Chci sice setrvačnost, inertii, hmostnost, gravitaci a podobné libůstky, ale celé bych to podřidil vlastnostem fiktivního pohonu rakety. Takže zas žádné šílenosti, kdy roztočenou raketu hráč vyrovnává půl hodiny jednotlivými zášlehy motorů.

Bod 4
Docela rad bych tam měl gravitaci velkých těles, kdy by hráč musel počítat s gravitační pastí nebo používat gravitační prak apod.

Bod 5
V principu chci aby mohl hráč přeletět od hvězdy ke hvězdě bez použití nějaké brány nebo skoku. Třeba jen se zrychlenym časem (bod 1). Samozřejmě nějaký druh hyper motoru a skoky "podprostorem" (nebo co si vymyslím) bych tam chtěl. Jen to nechci mít postavené na SJZV branách.


Takže sečteno podtrženo je to naprosto nereálný projekt :-).

1. 5. 2011

Úvodní slovo

Tak jsem se konečně dokopal k založení blogu. Prokousat se nastavením Googlu nebyl žádný med. Jsem teď v podstatě strašně vzteklej. Měl jsem totiž už jeden blog založenej a nějakym nesmyslem jsem o něj přišel. No nic. Snad se to nebude opakovat. Tak a teď už k věci.

Jsem obyčejný (rozuměj: naprosto špičkový) Java programátor. Možná poslední v republice, protože ostatní jsou již všichni developeři. Bylo to až legrační zjištění při výměně vizitek na jednom JUGu a JOSu. I když možná kecám. Nedávno nás spolkla jiná firma a tak už i já jsem henten senior java developer. No čert to vem.

V práci mě živí tvorba UI, na což používám framework Eclipse RAP . Bastlím v tom jeden bundle/plugin, kterej nám pomáhá zjednodušit psaní UI formulářů na nezbytné minimum a zatím se daří. Eclipse RAP mám rád. Předtím jsem prototypoval v JSF + Richfaces, dělal jsem Struts, znám rámcově GWT a pár dalších technologií, ale RAP mi sedí zdaleka nejvíc a IMHO to je technologie o které ještě bude hodně slyšet. Další udělátka, které na našich projektech používáme jsou : Eclipse RAP, Eclipse RCP, JFace, SWT, Eclipse Equinox (OSGi), Spring (DI, Transakce, Remoting, Integration), AspectJ, JiBX, Hibernate. Celé se to mavenuje a Hudson (dnes Jenkins) nám z toho staví ty blázince co pak putujou k testerům a nakonec i k zákazníkům. Vrchní architekt spravuje domain vrstvu přes Enterprise Architekt a generuje z toho další možné i nemožné výstupy/pomůcky pro nás, obyčejné zedníky kódu. Celé to bušíme v Eclipse IDE (toho času 3.6.2), který začíná být docela dýchavičný. Ono se ale nelze moc divit, když musí ustát několik desítek projektů v jednom workspace. Také jsem si nedávno odzkoušel napsat plugin pro Eclipse IDE, kde jsem teprve poznal sílu Eclipse IDE potažmo RCP. Zprovoznění code completetion, hyperlink, syntax highlight, preferences atd atd bylo elegantní a nechalo mě nahlédnout do dílny mistrů, byť obdiv malinko zkalený mírným bordelem v API Eclipsu, což je asi důsledek zpětné kompatibility. Jsem vážně zvědav, až někdy bude čas a pohraju si s Eclipse 4.x, kde je šance, že dojde k očištění API.

Ještě bych snad začal trochu víc ze široka. Začínal jsem jako 10. letý capart s Commodore 64 (8-bit), ke kterému jsem nedostal kazeťák a tak jsem měl pouze C64 a návod v němčině s popisem Basicu. Kazeťák chyběl asi půl roku (C64 mělo speciální s plochým proprietarním konektorem) a tak jsem vlastně začal programovat. Později jsem přesedlal na Amigu 1200 (jazyky: Amos, Assembler) a nakonec skončil u PC a Windows (Pascal, Delphi, Visual Basic 6.0, Java). Jako mrňous jsem měl sen, že jednou budu programovat hry. No a protože se nezadařilo a i přes to, že jsem pár hříček za svůj život zbastlil, skočil jsem u klasických vnitropodnikových systémů. Tak jsem si teď, na stará kolena, vymyslel hobby projekt. Bude to naprosto úžasný, jedinečný a unikátní vesmírný simulátor. Simulátor jaký svět ještě neviděl (ano, podobnost s jitrnicí není čistě náhodná). Projekt jsem pojmenoval grandiózně: M-theory. Ťukám ho už nějaký ten pátek a ještě chvíli a budu mít tak jednu tisícinu hotovou. Tady je volně přístupné SVN projektu. Nevim jestli to případný zvědavec je schopen rozběhat, ale tomu asi budu věnovat některý z následujících blog canců. M-theory je vlastně ten hlávní důvod proč zakládám blog. Rád bych se podělil o algoritmy, na které narážím na netu, které se snažím pochopit a převzít. Rád bych rady a konzultace od komunity a třeba, když budu pilný i nějakého nadšence, který se přidá. No nejsem naivní ? ;-)

A dál ? Dál už nic.