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í