Konverzija android aplikacije u biblioteku

Autor ovog članka je profesionalni softverski inženjer i nudi konsultantske usluge android razvoja i obuke. Više informacija ovde.

Prebacujete android aplikaciju u android biblioteku? Sama promena je vrlo jednostavna, Properties->Android,  štiklirate Is Library i voila. Makar je tako u teoriji a evo par saveta koji će pomoći da sve prođe glatko i u praksi…

  • Sve switch bolokove zamenite if-else blokovima. Switch se ne može koristiti unutar android bilbioteke sa vrednostima tipa R.id.xxx Ovi int-ovi su final kada je projekat aplikacija ali nisu kada je projekat biblioteka, pretpostavljam zato što aplikacija može da override-uje (preveže?) vrednosti radi kastomizacije (nem pojma kako bi ovo preveo).
  • Ako imate neke custom komponente koje sa sobom nose i custom xml atribute dobićete za svaki grešku tipa “No resource identifier found for attribute”. Kada ubacite ovakve elemente u svoje layout fajlove naravno morate definisati xml namespace gde okruženje može naći specifikaciju svih atributa vezanih za tu komponentu. Sama ta definicija je xml atribut koji obično izgleda ovako xmlns:custom=”http://schemas.android.com/apk/res/your_app_package_name” Problem je u tome što your_app_package_name sada više nije zaista package name tj. jednistveni identifikator aplikacije, već package name biblioteke čime postaje manje bitan. Naravno ovu vrednost ne možete zameniti stvarnim paketom aplikacije koja koristi biblioteku iz očiglednih razloga. Rešenje je da stavite xmlns:custom=”http://schemas.android.com/apk/res-auto” što je u principu placeholder za realno ime paketa konkretne aplikacije koja koristi biblioteku…
  • Ukoliko koristite objekat tipa Application, kod u njemu će biti mrtav osim ako ga ne referencirate i u manifestu aplikacije koja koristi biblioteku. Zvuči logično, s obzirom da sam projekat više nije aplikacija nego biblioteka…

Ako vas zanima zašto bi uopšte ovo radili evo jednog vrlo realnog slučaja: napravili ste aplikaciju a sada želite da je “brendirate” tj. da izbacite verziju “Firma X”, “Frima Y” itd. nad istim kodom uz kozmetičke izmene. Najlakše ćete ovo uraditi tako što sam projekat pretvorite u bilioteku  pa ga referencirate iz “brend” projekata. Ovo se radi iznenađujuće lako kad se sve uzme u obzir, ali o tome u nekom sledećem postu…

Podeli ovaj post preko...

One thought on “Konverzija android aplikacije u biblioteku”

Leave a Reply

Your email address will not be published. Required fields are marked *