2012-11-17 1 views
2

Je suis en train de développer une application qui nécessitera une sorte de système de plugin.Android, système de plugins et classes reflétées

Est-il possible de charger des classes avec la réflexion sur un .apk distinct?

Toutes les autres idées sont les bienvenues.

EDIT: Résolu, merci à tous. En fin de compte, je suis venu avec ceci:

public Object loadPlugin(String packageName, String className) { 
    try { 
     return (Object) new PathClassLoader(getPackageManager().getPackageInfo(packageName, 0).applicationInfo.sourceDir, null, getClassLoader()).loadClass(className).getConstructor(new Class[]{ Context.class, IXoneApp.class }).newInstance(new Object[] {this, this.appData()}); 
    } catch (NameNotFoundException ex) { 
     Utils.DebugLog(Utils.TAG_FRAMEWORK, "El módulo " + packageName + " no está instalado"); 
     return null; 
    } catch (Exception ex) { 
     Utils.DebugLog(Utils.TAG_FRAMEWORK, "Fallo al invocar el módulo " + packageName + "\n" + ex.getMessage()); 
     return null; 
    } 
} 
+1

Aucune idée de comment cela fonctionne ou même si, mais http://developer.android.com/reference/dalvik/system/DexClassLoader.html sonne comme il pourrait faire quelque chose comme ça – zapl

+1

Cela semble bien, ça fonctionne. Cela pourrait être quelque chose comme ceci: 'DexClassLoader cl = nouveau DexClassLoader ("/mnt/sdcard/whatever.apk ","/chemin/temp ", null, getClassLoader());' Mais si je veux que l'utilisateur installe juste l'apk? Cela nécessite que l'apk soit sur ce chemin. – user1831114

Répondre

0

Vous devez être plus précis sur « plug-in ». Si vous souhaitez pouvoir ajouter des fonctionnalités distinctes, vous pouvez avoir un .apk principal puis des .apks plus petits pour implémenter les plugins. Cela dépend de ce que vous essayez de faire.

+1

Je suis en train de développer un framework d'application mobile. À partir de l'application principale, le développeur peut exécuter une sorte de script. J'ai implémenté la génération de PDF et d'autres choses dans le framework, mais cela rend le .apk énorme. Avec la réflexion je peux construire différents .apks, un avec la génération de pdf et sans lui, mais je ne veux pas cela. Ce que je voudrais accomplir, c'est que si le développeur veut utiliser la génération de PDF, alors il devra installer le plugin PDF. – user1831114

Questions connexes