PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Android Architektur bzw. Komponten


Tiamat
2010-11-10, 18:35:56
Hallo,

ich lese die letzte Zeit auf irgendwelchen Seiten oft ,dass man in Android als Programmierer Komponenten ersetzen bzw. wiederverwenden kann und man im Gegensatz zu iOS sogar in der Lage ist, die Architektur zu erweitern. Das hat mich interessiert. Darauf hin habe ich mich ein wenig mit den SDK befasst, und zwei interessante Dinge gefunden.
Den Content-Provider, der ist allerdings nur zum Austausch von Daten zwischen zwei Applikationen und Intents, bei der man auf explizite Art und Weise als Activity eine Komponente einer anderen App benutzen kann. Ist das damit gemeint oder wie hab ich mir das genau vorzustellen ?
Und wie kann man da persönlich jetzt die Arch erweitern?

Gruß
Tiamat

gast Mathias
2010-11-10, 20:45:38
Prinzipiell kannst du von jedem Android Handy das komplette System im Source bekommen, bei dem nur einige Ausnahmen fehlen.
Für viele Handys gibts dann auch Projekte, die das einfach kompilierbar zur Verfügung stellen (z.B. cyanogenmod). Du kannst also deine komplette Firmware selber kompillieren und dann natürlich auch anpassen. Fehlen tut dann "nur" der Market und andere Google und Herstellerapps, die man dann von einem Backup aber einfach nachinstallieren kann.

Meine eigene Erfahrung beschränkt sich auf zwei Dinge. Zum hatte ein Freund gefragt, ob es für Android auch andere Tastaturlayouts geben würde (z.B. Neo). Ich hatte nichts gefunden, also gerade im AOSP die Tastatur gesucht, und innerhalb von 15 Minuten hatte ich eine Tastatur auf dem Handy mit anderem Layout (war mehr ein Proof of Concept).

Ein anderes Problem war, das man mit googlemail Adresse (und eben nicht gmail) seien Bilder nicht mit Picasa syncen konnte.
Also wieder im AOSP nach der Galery3d gesucht, dann "grep -ri gmail *" und das Problem war auch relativ schnell gelöst.

Da ich ansonsten eher wenig Entwicklung auf Android Handys mache, war ich total überrascht, wie einfach und schnell ich jeweils zum Ziel gekommen war.
Beim Gallery3d Problem hab ich auch interessante Einblicke gewonnen, weil ich am Ende den Sync Provider für Picasa umgeschrieben hatte.

Meinem Verständniss würde ich die Erweiterbarkeit von Android in drei bereiche Gliedern:
1) Kernelebene:
Du kannst den Linux Kernel selber kompilieren und aktualisieren oder nur einzelne Module dazuladen. Damit kann man z.B. auf dem N1 das normalerweise deaktivierte Radio aktivieren oder bei einigen Handys USB Host Funktionalität nachrüsten (USB Sticks ans Handy anschließen).

2) System/Userland Ebene:
Also alle Systembibliotheken sind modifizierbar. Mir fällt jetzt nicht viel (außer bugfixing) ein, warum man daran arbeiten möchte, man will ja die APIs kompatibel zu allen anderen Programmen behalten. Es gibt aber z.B. keine API um ohne root Rechte Screenshots anzufertigen, das könnte man basteln.

3) Applikationsebene:
Es werden zu fast allen Systemnahen Funktionen einfache und gut dokumentierte Schnittstellen angeboten. Google behält sich kaum Funktionen vor, die nicht jeder Programmierer problemlos nutzen kann. Von der Hintergrund Sync Anwendung, Tastatur, Lockscreen, der komplette Launcher,... fast alles kann man durch eigene Programme austauschen, die man ohne Probleme auch in den Market stellen kann.
Es gibt aber auch einige Programme, die mehr Rechte benötigen als normalerweise vorgesehen (rooten), wie z.B. Backups von Programmen, Screenshots oder tethering (bei Handys ohne tethering).

1) und 2) werden normalerweise vom Handyhersteller versucht zu unterbinden, aber es gibt meines wissens kein Handy, auf dem man das nicht umgehen kann. Und im Android market sind sogar Programme erlaubt, die nur mit gerooteten Handys funktionieren.

Gast
2010-11-10, 21:15:43
Vermutlich bezieht sich der Hype von Androids komponenten-basierter Architektur hauptsächlich auf die lose Koppelung der einzelnen Activities und Services über Intents.

Ist ja auch zugegebenermaßen eine schicke, simple und dennoch mächtige Art der Interprozess-Kommunikation. Der Empfänger ist z.B. nicht fest verdrahtet, sondern wird entweder vom System ausgewählt, oder man überlässt dem Benutzer die Wahl.

Ansonsten bietet Android für einen Programmierer ja nun wirklich nichts radikal Neues, was es nicht schon seit Jahren bereits auf Workstations gibt. Nur eben jetzt auch in Form eines Smartphone-OS.