16. 7. 2011

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í

4 komentáře:

  1. Nkd, ja bych zkusil ten programek na dekompilaci zdrojaku... uz si nevzpominam na jmeno. Ja ho mel jako desktop a tys ho mel jako plugin do Eclipse.

    Pro nahlednuti do zdrojaku to bude stacit. Nicmene ta desktopova verze vysledek ulozit na hardisk. Coz by mohla byt nejaky ten recept jak si to uvarit z android.jar :-)

    derhaa

    OdpovědětVymazat
  2. Ouch, ja sem nedocetl clanek do konce. LOL

    OdpovědětVymazat
  3. Tak ten programek se jmenuje Java Decompiler :-). Homepage - http://java.decompiler.free.fr/

    OdpovědětVymazat
  4. 2TC: diky za snahu, ale toto neni schudna cesta. Ladit neco proti dekompilovanym zdrojakum je sebevrazda. Ne vzdy, ale je to vetsinou posledni moznost. Navic u androida nejsou .class tim za co se vydavaji. Jsou to pouze Stuby. To znamena vse je v podstate jen API a to i implementace (tam metody hazeji RuntimeException("Stub")). Takze po dekompilaci neuvidis nic.

    OdpovědětVymazat