A może tak prze­nieść liby?

Smart­fon ma wie­le zasto­so­wań. Dla przy­kła­du wie­le osób, gra na tele­fo­nie, gdy jest w kolej­ce do leka­rza.
Mam pomysł, jak moż­na by oszczę­dzić miej­sce na dys­ku w smart­fo­nie z andro­idem. Jak na linu­xie pobie­ra­my grę przez Synap­se, wyświe­tla nam się lista pakie­tów, któ­re musi­my dodat­ko­wo pobrać, żeby odpa­lić grę. Jest to mię­dzy inny­mi sil­nik gra­ficz­ny, na któ­rym dzia­ła dana pro­duk­cja. Na andro­idzie spra­wa ta roz­wią­za­na jest w inny spo­sób. Według mnie jest on gor­szy. Jeśli pobie­ra­my plik apk gry, w tym pli­ku są od razu liby sil­ni­ka gra­ficz­ne­go. Pół bie­dy . Ale w wie­lu apli­ka­cjach są nawet 2 wer­sje (zda­ża­ją się przy­pad­ki, gdzie nawet 3) sil­ni­ka gra­ficz­ne­go, do archi­tek­tu­ry arme­abi-v7a oraz x86. Jeże­li pobie­rze­my np 100 gier opar­tych na sil­ni­ku uni­ty – będzie­my mie­li 100 kopii bar­dzo podob­nych biblio­tek, oraz 100 innych kopii, któ­re nawet nie zadzia­ła­ją na naszym smart­fi­nie. War­to wie­dzieć, ile zaj­mu­ją takie biblio­te­ki. Zwy­kle jest to 40%-80% wagi całej apki (mowię o grach bez pli­ków obb lub danych w /sdcard/android/data ) . Więc na par­ty­cji /sdcard mamy peł­no libów, a w /system jest pare­set wol­nych mega­baj­tów miej­sca.

Mój pomysł jest taki.
W andro­idzie domyśl­nie były­by zain­sta­lo­wa­ne biblio­te­ki paru naj­po­pu­lar­niej­szych sil­ni­ków, np. unity3d, cocos 2d, unre­al engi­ne 3. Gry, zamiast odwo­łań do pli­ków w pli­ku apk (tro­chę dziw­nie to brzmi 😉 ), odwo­ły­wa­ły­by się do biblio­tek sil­ni­ków gra­ficz­nych w /system.

Te roz­wią­za­nie mia­ło­by swo­je minu­sy.
Google wska­za­ło­by jed­no­znacz­nie, że to z tych sil­ni­ków nale­ży korzy­stać. Kon­ku­ren­cja by zde­chła. Dewe­lo­pe­rzy nie się­ga­li­by po inne sil­ni­ki, bo mie­li­by świa­do­mość, że przez to gra zaj­mo­wa­ła­by dużo wię­cej miej­sca na dys­ku.

Nara­dza się jesz­cze pyta­nie – co z oso­ba­mi, któ­re mają za mało miej­sca w /system na zmiesz­cze­nie peł­nych biblio­tek?
Nie­trud­no było­by stwo­rzyć narzę­dzie bin­du­ją­ce z odwo­łań do biblio­tek w /system do fol­de­ru na /sdcard, o ile tam mamy wystar­cza­ją­co miej­sca. Inne roz­wią­za­nie, było­by takie, że dewe­lo­pe­rzy pod­sy­ła­ją do Skle­pu Play wer­sję z liba­mi w pli­ku apk, a Google zmie­nia tro­chę kod i pro­gram zamiast odwo­ły­wać się do libów w pli­ku apk odwo­łu­je się do tych w par­ty­cji sys­te­mo­wej. Na ser­we­rach Google były­by dwie wer­sje. W klien­cie skle­pu play była­by opcja, czy pobie­ra­ne gry mia­ły­by zawie­rać liby, czy nie.

Jest jesz­cze jeden pro­blem.
Nie wszy­scy gra­ją na andro­idzie, a gdy­by liby były pre­in­sta­lo­wa­ne, nie­któ­rzy narze­ka­li­by, że to im zabie­ra miej­sce.
Ale na to też moż­na zna­leźć roz­wią­za­nie.
Liby wca­le nie były­by pre­in­sta­lo­wa­ne, a opcja ich insta­la­cji była­by w usta­wie­niach tele­fo­nu. Po klik­nię­ciu w odpo­wied­nią opcję zosta­li­by­śmy prze­nie­sie­ni do spe­cjal­nej apli­ka­cji insta­lu­ją­cej liby. Mogli­by­śmy wybrać pod­sta­wo­wy pakiet libów, lub wła­sny. Takie coś po czę­ści roz­wią­za­ło­by pro­blem z wyróż­nie­niem nie­któ­rych sil­ni­ków gra­ficz­nych, pro­blem z miej­scem insta­la­cji biblio­tek (było­by okno wybo­ru:” zain­sta­lo­wać na par­ty­cji /sdcard czy /system?”. Po wybra­niu jed­ne­go z tych, zmie­nia­ła­by się war­tość atry­bu­tu w build.prop, np. 0= brak libów w pamię­ci, 1= liby na /system, 2= liby na /sdcard), oraz pro­blem osób nie­gra­ją­cych na tele­fo­nie. A cała resz­ta mogła­by mieć dwa razy wię­cej gier na tele­fo­nie. W komen­ta­rzach daj­cie znać, co o tym sądzi­cie 😉