38 votes

Architecture des plugins pour une application Android?

Je veux mettre en œuvre un système de plugin pour un Open Source application, parce qu'il est devenu très grand, avec de nombreuses fonctionnalités que seuls quelques utilisateurs ont besoin. Libérant différentes applications n'est pas une bonne solution, parce que l'utilisateur veut feature7 et feature24 tandis que userB veut feature39 et feature24.

Où puis-je trouver un bon exemple d'une architecture de plugin?

Voici ce que j'aimerais un plugin pour être capable de faire:

Par exemple, l'un des plugins devez ajouter un bouton sur un écran, et en cliquant sur ce bouton incrémente une valeur dans l'application de base de données. Ce n'est pas faisable avec les Fournisseurs de Contenu et les Intentions, autant que je sache.

Je veux éviter de faire de la base de l'application du code complexe, avec des tonnes de crochets partout.

Le formulaire du plugin peut être un fichier sur la carte SD, d'une application, ou quoi que ce soit d'autre.

8voto

Cozytrony Points 51

J'ai fait un cadre qui fonctionne comme Robo-guice avec certains de ses principaux Cio fonctions. (Coupe vers le bas sur le standard de codes à charger vues/service, etc...)

Mais le cœur de ce qui, je crois est la solution à votre problème, est la capacité de charge séparé APK "plugin" des fichiers, qui comprend les "res" ainsi que <layouts>.xml fichiers. L' <layouts>.xml le fichier peut être indépendamment gonflé par les classes à l'intérieur de cette APK. Qui est, vous pouvez charger une CustomView (qui gonfle son propre <layout>.xml) en provenance des parents/App. Tout cela est fait sans le Parent App APK de savoir comment l'INTERFACE utilisateur a été gonflé dans le plugin APK.

Exemple de ce que je veux dire: J'ai une Application de carte, le cadre sera dynamiquement scan installé l'APK qui correspond le "contrat" pour un "ajout de la fonction" plug-in, et les charges de l'INTERFACE utilisateur spécifique sur l'Application est Vue comme un panneau flottant.

Je dirais un module plug-in pour Android est possible, comme Android a la plupart, si pas tous le nécessaire construit en Api pour accomplir cette tâche.

Ce sont vos amis dans ce domaine de développement de plugin pour Android:

  1. PackageManager (Scan installer des paquets, aka Plugins)
  2. DexClassLoader (ClassNotFoundException va être une douleur si vous n'utilisez pas le bon ClassLoader btw)
  3. Réflexion Java

4voto

Christopher Oezbek Points 2691

Si vous allez juste pour une augmentation de la modularité, je vous conseille d'utiliser un conteneur d'injection de dépendance comme PicoContainer, Guice ou de Printemps.

Si vous voulez un peu de poids architecture de plug-in, puis aller pour plug-in Java, Framework (JPF).

Il permet de définir des points d'extension, qui peut être mis en œuvre par vos modules. La mission principale de l'plug-in cadre est de fournir un moyen que vous pouvez regrouper ces modules (comme les pots), qui sont dynamiquement trouvé par l'application de base et étant donné que les mises en œuvre du point d'extension.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X