Le résumé est: Comment puis-je construire un APK et les bibliothèques distinctes (par qui je veux dire des ensembles de classes (et, idéalement, des ressources trop) dans certaines formes, telles que le POT, l'AAR ou DEX fichiers), mais de ne pas inclure ces bibliothèques dans le APK; au lieu de cela, l'application des charges au moment de l'exécution?
Détail
Donc ma question principale est de savoir comment construire une application (ex: Gradle de configuration). Comment puis-je spécifier les classes qui en POT ou en DEX fichiers? Puis-je créer un Android Studio module pour chaque DEX fichier que j'ai envie de finir avec?
Un étroitement liés à la question est de savoir comment le code Java doit alors charger les bibliothèques externes et d'accéder à leurs classes au moment de l'exécution. Pour ce dernier, j'ai l'espoir que l'approche présentée à l'accès aux classes de l'application de dex fichier par le chargeur de classe serait de travailler.
J'ai essayé les instructions à https://developer.android.com/studio/projects/android-library.htmlmais qui construit un APK qui ne comprennent que la dépendance de la bibliothèque.
J'ai aussi essayé de Multidex (https://developer.android.com/studio/build/multidex.html), mais qui ne semblent pas à quitter le développeur de tout contrôle sur les classes qui vont dans lequel DEX fichier, et de plus, les colis dans un seul et unique fichier APK. AFAICT il n'y a aucun moyen de contrôler le chargement de ces DEX fichiers au moment de l'exécution.
Arrière-plan
Il y a une possibilité de "X-Y " problème" ici, donc je ferais mieux expliquer le contexte.
Je suis en train de construire une application pour un client. Il ne va pas être distribués par le biais de l'app store, afin de ne pas avoir accès au mécanisme normal pour les mises à jour. Au lieu de cela, le client veut de l'application pour être en mesure de se mettre à jour en téléchargeant de nouveaux composants de lui-même, afin de remplacer les anciens composants, sans devoir manuellement sideload une nouvelle APK. Le principal motif est ici que les mises à jour doivent être facile pour les utilisateurs non-techniques. Si l'application peut contrôler le processus de mise à jour, il peut la rendre lisse et guide de l'utilisateur.
En outre, l'application sera utilisée dans des zones où l'accès à internet est rare et cher, de sorte que le client veut être en mesure d'émettre des mises à jour des applications dans de plus petits morceaux (par exemple, 2 MO) plutôt que de forcer l'utilisateur à le re-télécharger l'ensemble de l'application pour recevoir une petite mise à jour.
L'un des aspects les exigences que je dois mentionner, en cas de questions, c'est que les bibliothèques être chargé au moment de l'exécution sont censés vivre sur une carte microSD. Cela peut aussi aider à la distribution des mises à jour sans accès à internet.
L'état actuel de l'application est qu'il est d'environ 50% écrit: C'est un couple de versions antérieures ont été libérés, mais l'application doit être modifié (restructuré) afin de répondre aux exigences ci-dessus, ainsi que d'autres.