HTML

HTML

A BME Távközlési és Médiainformatikai Tanszék hallgatói és oktatói blogja az Android platformról.

Facebook

Friss topikok

  • édesebb élet: www.gsmbutik.hu/sony-xperia-xz2-tukrozodes-es-uva-uvb-mentes-uvegfolia-tempered-glass (2018.05.18. 01:30) Kutatók éjszakája - 2014
  • lajthabalazs: Nem admoboztam azóta. Hétfőn lesz egy elóadás az Ericssonos Android klubbon, ahol lesz szó a témár... (2011.12.03. 07:09) Reklám-tapasztalatok
  • A Tata: szeretnék érdeklődni, hogy nem diák is jelentkezhet-e ilyen tanfolyamra; akár programozói előképze... (2011.02.03. 16:51) Újévi gyorstalpaló 2. - Adatok
  • lajthabalazs: 80 requestnél jött egy reklám, aztán semmi. Most 120 requestem volt, és két telefonon is 3G-n is ... (2011.02.02. 20:52) Don't download!
  • EvilHedgehog: Tanulságos. Ezért nem raktam én sem főzött ROM-ot a Galaxy S-re pedig csábító volt... (2011.01.29. 10:29) Softkeyboard

Linkblog

Shared libraries - az Androidos JAR

2010.10.31. 21:56 lajthabalazs

Újrahasznosítható XML erőforrásokat szerettem volna készíteni. Szinte biztos voltam a kudarcban, de azért megpróbáltam, hátha Google gondolt az ilyesmire. Csináltam egy projektet, beleraktam egy layout-ot, és exportáltam JAR-ként, pont, ahogyan JAVA projektemmel tettem volna. Amikor a JAR-t importáltam, rögtön jött a hiba: konfliktus a nevekben, mivel az erőforrások nincsenek package-ekbe rendezve. Átnevezés, második kör. Ekkor legalább már fordult, de amikor a hivatkozott csomag R osztályán keresztül megcímeztem az erőforrásomat, természetesen a fogadó projektem első layout-ját kaptam vissza, mivel a cím integer volt, és a projekt fordulásakor mind két R osztályban ugyanbban a szekvenciában osztották.

Ugyanez történt, amikor a projektet hivatkoztam a Build Path-ban. Eddig rendjén is van minden, erre számítottam. De akkor hogyan lehet mégis újrahasznosítani az XML-eket? Az mégsem járja, hogy egyenként importáljam minden projektbe. A megoldás a Library project, egy elég nyakatekert eszköz pontosan az én problémám megoldására. Ha valamilyen erőforrást több projektben szeretnénk használni, akkor ki kell szerveznünk egy könyvtár-projektbe. Ez a könyvtár-projekt adható aztán hozzá a projektekhez.

A könyvtár projekt egy öszvér megoldás, amit az Android projekt struktúrája hívott életre. Ha az Android SDK szépen osztályokká fordítaná az XML erőforrásokat, ahogyan azt a .NET (ASP) és a J2EE (JSP) is teszi, akkor JAR-ként terjeszthetőek lennének. Így meg kell elégednünk a Library projects-el.

Mik a Library projects hátrányai? Legelőször is nem bináris, és nem kompakt. Ha valakinek oda szeretnénk adni, akkor azt open source tehetjük, és még csomagolnunk is kell. Másodszor egy projekt vagy könyvtár vagy futtatható. Ha egy projektet könyvtárként szeretnénk megosztani, akkor ki kell szerveznünk a megosztásra szánt erőforrásokat, forrás-file-okat egy külön projektbe, és azt könyvtárosíthatjuk. Annak ellenére, hogy ily módon előkészítjük a megosztásra szánt erőforrásokat, a fogadó alkalmazásban továbbra is fel kell tüntetni a manifest-file-ban, hogy pontosan mit is veszünk át - ha Activity-t is szeretnénk használni. Mivel az erőforrások továbbra sincsenek "csomagolva", ezért előfordulhatnak névbeli ütközések. Ilyenkor a host-alkalmazás élvez magasabb prioritást, a használt könyvtárak közt sorrend állítható fel. Az XML file-ok - még ha értelme is volna, és a felhasználó is szeretné - sem kerülnek összefűzésre, a magasabb prioritású file eltakarja az alacsonyabbat (Ehhez Google annyit fűz hozzá, hogy "To avoid resource conflicts for common resource IDs, consider using a prefix or other consistent naming scheme that is unique to the project (or is unique across all projects).", köszönjük). Végül pedig az utolsó hátrány: bár JAR-okat hivatkozhatnak, a könyvtáraink nem hivatkozhatnak más könyvtárakat, tehát ha van egy könyvtár-csomagunk, amit szeretünk használni, akkor a tartalmukat vagy egyesíteni kell, vagy minden egyes újabb projekthez egyenként hozzáadni az elemeket.

Mire jók ezek után a shared librariek? Nagyon szorosan összefüggő projektek redundáns elemeinek kezelésére. A Google is említ egy példát: adott alkalmazás ingyenes és fizetős változatának fejlesztése. Egy blogban a szerző a kétnyelvű alkalmazását kezelte így. Egy alkalmazás Skin-elésére is megfelelő lehet. Mire nem jó a shared library? Én nem ajánlanám univerzális komponensek, egyedi nézetek megvalósítására, nehezen terjeszthető, nehezen dokumentálható. Ezeket próbáljuk meg tisztán JAVA-ban elkészíteni. Az Activity-k újrahasznosítása pedig magasabb szinten megoldott, ha egy alap-funkciót Activity vagy Service valósít meg, akkor azt külön Appliation-ként terjesszük, és futási időben hasznosítsuk újra.

Szólj hozzá!

Címkék: package jar shared libraries

A bejegyzés trackback címe:

https://edudroid.blog.hu/api/trackback/id/tr332412556

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása