Plugin-Konzept

H

herrlado

Erfahrenes Mitglied
26
Hallo.
Hat jemand sich damit auseinandergesetzt?
1. Wo werden eigentlich die Dateien eines Apps gespeichert?
2. Kann man eigentlich irgendwelche Implementierungen einer Klasse später
Standalone installieren? Quasi reines Data-Package.
3. Kann man dann diese Klassen laden?


Ich würde gerne WebSMS modifizieren um Connector Klassen Später einfach nachzuliefern...

Gruß,
Lado
 
Hallo.

Zu Frage 0: Es gibt bereits einige Applikationen, die Plugins verwenden. Mir fällt da z.B. Locale ein, zu der es auch eine Entwickler-Doku gibt, hinsichtlich der Erstellung neuer Plugins:

Locale - Developer

Da mein ich konkret diesen Link:
Intent

Da könntest Du Dich mal einlesen.

Zu Frage 2+3: Meines Ermessens wird es nicht möglich sein eine bestehende Applikation um weitere Klassen zu erweitern, so wie Du es angedacht hast. Die Plugins sind nach meinem Verständnis eigenständige Applikationen, wenn man so will (also eine eigene APK-Datei), nur halt ohne Starter-Icon.

Zu Frage 1: Du meinst sicherlich die Dateien der App an sich oder? Also nicht Daten, welche von der App abgelegt werden. Eine Applikation besteht aus einer APK-Datei, worin alles enthalten ist (class-Files, Resources also Sounds, Bilder, Layout-XML, String-XML). Die APKs liegen je nach dem ob's eine Kauf- oder Gratis-App ist in 2 verschiedenen Verzeichnissen - hab nur gerade keine Lust genau nachzusehen welche ^^

Gruß,
Shini
 
Shinigami schrieb:
Hallo.

Zu Frage 0: Es gibt bereits einige Applikationen, die Plugins verwenden. Mir fällt da z.B. Locale ein, zu der es auch eine Entwickler-Doku gibt, hinsichtlich der Erstellung neuer Plugins:

Locale - Developer

Da mein ich konkret diesen Link:
Intent

Da könntest Du Dich mal einlesen.

Zu Frage 2+3: Meines Ermessens wird es nicht möglich sein eine bestehende Applikation um weitere Klassen zu erweitern, so wie Du es angedacht hast. Die Plugins sind nach meinem Verständnis eigenständige Applikationen, wenn man so will (also eine eigene APK-Datei), nur halt ohne Starter-Icon.

Zu Frage 1: Du meinst sicherlich die Dateien der App an sich oder? Also nicht Daten, welche von der App abgelegt werden. Eine Applikation besteht aus einer APK-Datei, worin alles enthalten ist (class-Files, Resources also Sounds, Bilder, Layout-XML, String-XML). Die APKs liegen je nach dem ob's eine Kauf- oder Gratis-App ist in 2 verschiedenen Verzeichnissen - hab nur gerade keine Lust genau nachzusehen welche ^^

Gruß,
Shini

Danke, werde ich mir mal anschauen.
Also ich dachte zunächst an einem naiven Ansatz: Man könnte z.b. eine "Plugin-Kasse" auf der /sdcard/myapp/plugins/ hinlegen.
Beim Starten oder manuell angestoßen wird die Hauptklasse überprüfen ob irgendwelche Klassen dort rumliegen und die Plugin-Schnittstelle implementieren und diese Laden -> Eigener ClassLoader
 
Grüß Dich,

herrlado schrieb:
Danke, werde ich mir mal anschauen.
Also ich dachte zunächst an einem naiven Ansatz: Man könnte z.b. eine "Plugin-Kasse" auf der /sdcard/myapp/plugins/ hinlegen.
Beim Starten oder manuell angestoßen wird die Hauptklasse überprüfen ob irgendwelche Klassen dort rumliegen und die Plugin-Schnittstelle implementieren und diese Laden -> Eigener ClassLoader

so naiv ist der Ansatz garnicht, im Prinzp funktionieren fast alle Plugin Konzepte. zumindest in der MS (.net) Welt. Alles hängt hier vom KlassLoader ab.
Peter
 
Shinigami schrieb:
Zu Frage 2+3: Meines Ermessens wird es nicht möglich sein eine bestehende Applikation um weitere Klassen zu erweitern, so wie Du es angedacht hast.

Der Vollständigkeit halber:
Bestehende Applikation = bereits installierte Applikation auf einem Gerät. So ein ClassLoader-Konstrukt funktioniert imho auch in Java, aber man müsste (was ich mit meinem beschränktem Wissen halt so sagen kann) diese Plugin-Klassen bereits zum Zeitpunkt des Erstellens der APK in der Paket-Struktur der App vorliegen haben.

Ich würde gerne WebSMS modifizieren um Connector Klassen Später einfach nachzuliefern...
Das habe ich so verstanden, das man quasi nur die Connector-Plugins installiert deren zugrunde liegenden Dienste man auch verwendet (z.B. nur GMX, oder nur O2). Übrigens ist das ein Punkt in der App, der mich ein wenig stört -> ich bräuchte nur O2. Mag keinen Overhead :)

Gruß,
Shini
 
Shinigami schrieb:
Der Vollständigkeit halber:
Bestehende Applikation = bereits installierte Applikation auf einem Gerät. So ein ClassLoader-Konstrukt funktioniert imho auch in Java, aber man müsste (was ich mit meinem beschränktem Wissen halt so sagen kann) diese Plugin-Klassen bereits zum Zeitpunkt des Erstellens der APK in der Paket-Struktur der App vorliegen haben.


Das habe ich so verstanden, das man quasi nur die Connector-Plugins installiert deren zugrunde liegenden Dienste man auch verwendet (z.B. nur GMX, oder nur O2). Übrigens ist das ein Punkt in der App, der mich ein wenig stört -> ich bräuchte nur O2. Mag keinen Overhead :)

Gruß,
Shini

Nein, die Klassen kann man später nachladen. Wichtig ist, dass die vordefinierte Schnittstellen implementieren.

Wegen WebSMS habe ich mich mit dem Entwickler in Verbindung gesetzt und er findet die Idee toll, dass man die Connectoren nachinstallieren kann. Mal gucken wir werden es ausprobieren.


Gruß,
Lado
 
Ah sehr gut, wenn das wirklich gehen sollte. Also nachinstallieren über den Market?

Wäre cool, wenn Du hier mal das Ergebnis eurer Bemühungen postest, damit ich aus meine Fehlern lernen kann :D

Danke und Gruß,
Shini
 
Hallo,
scjaut euch doch mal das Plugin Konzept von SharpDevelop (MonoDevelop) an, das was ich oben geschriebne habe entsprcht diesem Konzept.
Frohes fest
Peter
 

Ähnliche Themen

5
Antworten
0
Aufrufe
1.144
586920
5
F
Antworten
1
Aufrufe
775
swa00
swa00
N
Antworten
8
Aufrufe
1.620
markus.tullius
markus.tullius
Zurück
Oben Unten