Android - Est-il possible de créer une bibliothèque personnalisée à utiliser dans plusieurs applications?

StackOverflow https://stackoverflow.com/questions/1828448

  •  11-09-2019
  •  | 
  •  

Question

Est-il possible de créer une bibliothèque personnalisée dans Android (ayant ses propres ressources de mise en page) pour une utilisation dans plusieurs applications Android?

  • J'ai créé un fichier régulier * .jar mais quand j'essayé de créer / le style dynamique mon point de vue la plupart des propriétés ne fonctionnent pas. Même référence à des styles simples à partir du fichier android.jar tels que android.attr.listSeparatorTextViewStyle ne fonctionne pas.

  • J'ai créé un projet Android sans aucune activité, ayant ses propres fichiers de ressources et ce projet référencé d'un autre projet Android à utiliser dans son chemin de construction. Tout semble bien fonctionner mais l'émulateur continue à se briser (sans message d'erreur significatif dans le LogCat ) lorsque je tente d'exécuter le projet.

Est-ce que je manque quelque chose?

Était-ce utile?

La solution

Eh bien, je pense qu'il ya une façon de le faire (même si je ne l'ai pas essayé moi-même), mais il exige que les utilisateurs de votre bibliothèque d'avoir à construire leurs APK manuellement via aapt.

Le problème est le suivant: Le JAR vous exportez contient le fichier de classe R qui détient les ID de ressource de votre bibliothèque. Ainsi, toute application peut accéder à ces numéros d'identification en reliant simplement votre JAR. Cependant, cela ne suffit pas, car par défaut, seules les ressources dans res / dossier de l'application sont fournis avec l'APK. Par conséquent, vous devez créer l'APK vous en utilisant AAPT, lui disant d'inclure également les ressources de votre bibliothèque. Consultez l'outil AAPT aide pour plus d'informations.

Étant donné que cela implique que les utilisateurs de votre bibliothèque doivent introduire un processus de construction manuelle (ou au moins le modifier), il en fait une mauvaise expérience.

Autres conseils

Peut-être en retard à répondre, mais ce qui est trouvé intéressant. Mise en place d'un projet bibliothèque

  

Un projet de bibliothèque Android est un   projet de développement partagé holds   code source Android et des ressources.   D'autres projets d'applications Android peuvent   référence au projet de bibliothèque et,   le temps de construction, inclure son compilé   sources dans leurs fichiers .apk. Plusieurs   projets d'application peuvent faire référence à la   même projet de bibliothèque et une seule   projet d'application peut faire référence   plusieurs projets de bibliothèque.

     

Si vous avez le code source et les ressources   qui sont communs à plusieurs   projets d'application, vous pouvez déplacer   les à un projet de bibliothèque afin qu'elle   est plus facile à maintenir à travers   applications et versions. Voici   certains scénarios courants dans lesquels vous   pourrait utiliser des projets de bibliothèque:

  

Est-il possible de créer une coutume   bibliothèque android (ayant son propre   ressources mise en page) pour une utilisation dans   plusieurs applications Android?

Non. JARs ne peuvent pas avoir des ressources. Vous pouvez partager le code de cette façon, mais les ressources doivent résider dans les applications réutilisant les fichiers JAR.

  

Même référence à des styles simples de   le fichier android.jar tels que   android.attr.listSeparatorTextViewStyle   ne fonctionne pas.

Assurez-vous que vous liez votre JAR contre android.jar. Vous pouvez voir de nombreux exemples dans les composants CWAC sur mon github .

Est-ce toujours vrai avec R21? Je suis en mesure d'exporter un projet de bibliothèque dans le fichier jar et utilisé dans d'autres projets clients avec succès, à la fois sage et le code d'accès aux fichiers actifs sage.

http://developer.android.com/tools/projects/index.html a encore fait la déclaration suivante, qui ne semble pas plus vrai:

  

Vous ne pouvez pas exporter un projet de bibliothèque dans un fichier JAR Une bibliothèque ne peut pas être   distribué sous forme de fichier binaire (par exemple un fichier JAR). Ce point sera ajouté   dans une future version des outils SDK.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top