Comment Eclipse / ADT est-il intelligent en ce qui concerne les Projets de bibliothèque Android?

Donc, j'ai une poignée de cours de style "Utility" dans certains de mes projets. Je suis curieux de pouvoir les déplacer vers un projet de bibliothèque Android qui contient tout ou partie de mon code de colle non spécifique à l'application (wrappers et interfaces, surtout).

Donc, ma question est de savoir ce qui arrive aux fichiers dont je n'ai pas besoin dans cette bibliothèque. Je sais que les projets de bibliothèque Android basent simplement à copier leur code dans l'autre projet, alors si je dis utiliser 25% du code dans ma bibliothèque "à usage général", mon application contiendra-t-elle le bytecode pour 100% Je n'ai besoin que des choses dont j'ai besoin.

  • Après la mise à jour du service Google Play à la version 13, j'ai eu une erreur
  • Erreur lors de la réception du problème d'intention de diffusion
  • Comment changer de compte sous la NOUVELLE API Android Google Drive
  • Obtenir une photo d'un contact
  • Android Studio possède-t-il un outil d'analyse de mémoire comme MAT dans Eclipse?
  • La compilation de téléphone ne montre pas l'éclaboussure
  • J'ai eu des problèmes avec des cours inutilisés dans Proguard dans le passé, alors je suis juste mordu, deux fois timide avec l'ADT maintenant …

  • Comment activer la fonctionnalité d'évier A2DP dans Android?
  • Android BroadcastReceiver android.intent.action.BATTERY_CHANGED
  • Android studio v1 - la barre d'action ne s'affiche pas
  • Entrée récursive pour exécuter Transitions de paiement
  • Comment puis-je utiliser la fonctionnalité d'extraction-rafraîchissement dans une application PhoneGap sans iScroll?
  • Désirialisation de matrices d'objets
  • 3 Solutions collect form web for “Comment Eclipse / ADT est-il intelligent en ce qui concerne les Projets de bibliothèque Android?”

    Malheureusement, tous vos projets augmenteront lorsque la bibliothèque grandira, même si la plupart des contenus de cette bibliothèque ne sont pas utilisés. Je l'ai testé moi-même en créant une application A et une bibliothèque L. Si L est une bibliothèque utilisée en A, le fichier classes.dex (et donc le fichier A.apk) augmente si j'ajoute plus de classes – même si elles ne sont pas utilisé.

    Pour résumer: en ce moment, je créerais une bibliothèque de base pour certaines choses qui sont petites et qui peuvent être utilisées par de nombreux projets, et créer une nouvelle bibliothèque pour chaque nouveau composant qui sera plus grande et qui est uniquement utilisée par certains projets. Un bon candidat pour une nouvelle bibliothèque serait un nouveau composant UI avec plusieurs images définies dans les ressources. Un bon candidat pour la bibliothèque de base sont des méthodes couramment utilisées et des objets comme les caches de fichiers, par exemple. Le code compilé est compressé assez fortement pour Dalvik, que vous pouvez voir ici. (Toute la présentation est vraiment amusante à regarder 🙂

    Modifier: Si ProGuard est activé, il supprimera également le code non utilisé pour vous. Le proguard.cfg par défaut est suffisant. Il ne fonctionnera pas sur le débogage (par défaut) construit, mais lorsque le .apk final est compilé. C'est donc possible!

    J'ai utilisé 3 projets de bibliothèque Android de niveau profond avec succès, même si c'est une sorte de douleur. Le principal cas d'utilisation est lorsqu'il existe un ensemble de ressources et de classes que vous souhaitez partager dans quelques projets. Comme j'utilise un système de contrôle de version, je préfère ne pas utiliser de liens symboliques.

    Notez que les projets de la bibliothèque Android souffrent également beaucoup lorsqu'ils traitent des ressources. ADT reconstruira R.java une fois pour chaque bibliothèque, et chaque R.java contiendra une copie de tous les identifiants de ressources de toutes les bibliothèques. Le principal problème ici est que les ressources sont régénérées pour l'ensemble du projet dans son ensemble, et il n'y a aucun moyen de "construire un pot" pour une dépendance comme on le attendait avec les "bibliothèques" normales. Nous avons essayé d'intégrer avec OpenFeint, et nous avons eu toutes sortes d'enfer qui portaient sur les bibliothèques et les dépendances. Je pense que nous avons fini par fusionner tous les fichiers sources et ressources OpenFeint dans notre propre projet et abandonner le projet "Bibliothèque", car il offrait peu de valeur.

    Les projets de la bibliothèque d'Android sont une façon cluny de partager le code entre les projets et d'avoir un certain nombre d'inconvénients. J'ai constaté que tout ce qui a été accompli avec un projet de bibliothèque peut également être réalisé avec des liens symboliques (source de liaison symbolique en deux projets). Je n'ai pas encore trouvé d'utilité où un projet de bibliothèque Android offrait quelque chose qui n'était pas facile à reproduire avec d'autres moyens moins fragiles.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.