Verständnisfrage - Ist es möglich eine App so zu programmieren, dass nachträglich Funktionalitäten - Plug-Ins eingebunden werden können?

  • Antworten:11
Esox lucius
  • Forum-Beiträge: 7

03.04.2014, 06:34:27 via Website

Hi zusammen, mein erster Post, schön hier zu sein.
Vereinfacht:
Meine App hat die Menüeinträge und Activities Kontakte, Gruppen, E-Mails
Nun möchte ich ein Plug-In "Kalendar" programmieren und in den PlayStore stellen. Dies kann dann heruntergeladen und installiert werden. Danach taucht "Kalendar" im Menü auf und kann ausgeführt werden.
Ist sowas in Android/Android technisch möglich?:unsure:

Hintergrund für wen's interessiert:
Ich möchte... soll:grin: eine App entwickeln, die auf einzelne Bedürfnisse zugeschnitten werden kann. Theoretisch kann sich dann jeder die Funktion, die er gerne möchte dazuschreiben - die App ist openSource.
Mein Prof hat für ein laufendes Projekt von mir gemeint, dass das ein tolles Merkmal wäre und das ginge bestimmt. Hab viel gesucht und nix hilfreiches gefunden. Ich persönlich glaube nicht, dass das auf dem Wege funktioniert, aber ich hätte da gerne Gewissheit.

Antworten
Esox lucius
  • Forum-Beiträge: 7

03.04.2014, 07:07:21 via Website

Vielleicht noch ein Nachtrag:
Für mein Verständnis ist doch eine App wenn diese erstmal kompiliert und installiert ist fix und kann nicht einfach verändert werden. Ich kann nur eine neue Version der App mit zusätzlichen Funktionalitäten neu installieren. Da gehts ja nicht um irgendwelche Schneeflocken die Saisonbedingt im Design auftauchen - sowas wurde ja von den Entwicklern dann vorausgeplant?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

03.04.2014, 07:13:59 via App

Wilkommen im AP Forum!

Also es ist technisch möglich, erfordert aber eine gute Logik etc. Das Plugin müsste auf eine Schnittstelle der Hauptapp zugreifen können.
Ich weiss nicht wie gut du Java schon Programmieren kannst und wie viel zeit du investieren willst, aber einfach geht das nicht gerade.
Du brauchst halt in der Hauptapp ne schnittstelle für Plugin Apps diese Plugins müssen dann nach einem Bestimmten schema aufgebaut werden damit sie die schnittstelle nutzen können.

Edit: Für sowas gibt es die Update funktion.
Wann du welche machst und wann nicht musst du selber entscheiden.
Neue Funktionen könntest du aber auch einbauen und dann nen uodate rausschicken.

— geändert am 03.04.2014, 07:16:10

LG Pascal //It's not a bug, it's a feature. :) ;)

Esox lucius

Antworten
Esox lucius
  • Forum-Beiträge: 7

03.04.2014, 07:31:23 via Website

Hi Pascal, vielen Dank für den Post.
Nicht uninteressant. Man müsste quasi eine Art Framework dafür entwickeln und auch gut dokumentieren:wink:.
Das hört sich eigentlich ziemlich spannend an, auf jeden Fall ne Herausforderung. Ich muss mich mal schlau machen, wie/ob sowas schonmal umgesetzt wurde.
Das mit der Zeit ist so ne Sache - die App an sich wird schon für meine Verhältnisse ein ziemlicher Brummer :lol: das ganze dann auch noch framework-fähig zu kriegen ist sicher bei dem aktuellen Funktionsumfang keine one-man-show.
fallen dir vielleicht noch ein par gute quellen / hitwords für das thema ein?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

03.04.2014, 07:39:13 via App

Ich glaube es gibt auch schon solche apps mit plugin

vlt. mal nach android app embed plugin suchen oä.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Esox lucius
  • Forum-Beiträge: 7

03.04.2014, 07:43:05 via Website

Ja, das hilft mir auf jeden Fall alles schon ein gutes Stück weiter, da kann ich mich weiter durchbeissen ^^

Antworten
Fabian Simon
  • Forum-Beiträge: 359

03.04.2014, 08:46:53 via Website

Hi,
imgrunde solltest du aber über mehrere Interface in Verbindung mit INTENT das Problem lösen können.


PseudoCode Mäßig ungefähr so:

Plugin:
Interface 1:
registriere Plugin.
Macht einen Intentaufruf an die Haupapp und teilt ihr anzeigename + Klassenbezeichnung usw. Die Haupapp merkt sich diese Informationen.

...

Wenn dann das Plugin genutzt wird, ruft die Haupapp das Plugin auch über ein Intent auf.

Und über die Schnittstelle können dann auch Datenausgetauscht werden.


Wenn du das ganze mit ner schönen API packst, bekommen die Pluginschreiber garnicht mit wie es funktioniert und "sprechen" nur mit den Schnittstellenmethoden.

— geändert am 03.04.2014, 08:48:00

Esox lucius

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

03.04.2014, 12:23:04 via Website

An sich ist das ein Intent, der ggf Daten liefert. Oder ein ContentProvider. Ob das immer UI sein muss ist so die andere frage.

Letztendlich machen APPs das aber schon lange, Muzei z.b mit erfolg

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Esox lucius

Antworten
Esox lucius
  • Forum-Beiträge: 7

04.04.2014, 11:45:33 via Website

ja stimmt, ich kannte das von qr-code scannern/generatoren. da hab ich das mal gesehen. der einzige "nachteil" wäre dann nur, dass das plugin nochmal separat in den anwendungen auftaucht. aber das würde mich eigentlich nicht stören.

Antworten
Esox lucius
  • Forum-Beiträge: 7

04.04.2014, 11:46:08 via Website

cool, vielen dank. das sieht doch schon nach dem aus, was ich brauche.

Antworten
Esox lucius
  • Forum-Beiträge: 7

04.04.2014, 11:50:12 via Website

Fabian Simon
Hi,
imgrunde solltest du aber über mehrere Interface in Verbindung mit INTENT das Problem lösen können.


PseudoCode Mäßig ungefähr so:

Plugin:
Interface 1:
registriere Plugin.
Macht einen Intentaufruf an die Haupapp und teilt ihr anzeigename + Klassenbezeichnung usw. Die Haupapp merkt sich diese Informationen.

...

Wenn dann das Plugin genutzt wird, ruft die Haupapp das Plugin auch über ein Intent auf.

Und über die Schnittstelle können dann auch Datenausgetauscht werden.


Wenn du das ganze mit ner schönen API packst, bekommen die Pluginschreiber garnicht mit wie es funktioniert und "sprechen" nur mit den Schnittstellenmethoden.
ja, klingt logisch. hab das auch schonmal gesehen.
ich könnte mir auch vorstellen, dass ich einfach auf eine xml zugreifen kann, in der ich dann den neuen menüeintrag, bzw sämtliche ablege. im grunde mach ich das in android studio ja schon von haus aus.

Antworten