2010-09-14 4 views
4

Je suis assez nouveau pour le développement Android, mais j'ai une certaine expérience avec Java et Eclipse. Je cherche des moyens de créer des bibliothèques réutilisables (contrôles, aides, activités "standard", etc.) que je pourrais utiliser dans mes propres projets, mais qui pourraient aussi être distribuées à d'autres développeurs sans divulguer le code source.Créer une bibliothèque pour le développement Android?

Normalement, je regrouperais les fichiers de classe dans un fichier JAR et tout autre développeur pourrait l'ajouter au classpath et utiliser les classes empaquetées. Comment est-ce que je peux faire cela avec des projets d'androïde? J'ai lu à propos de projets de bibliothèque Android, mais comme la documentation indique qu'ils ne peuvent pas être empaquetés dans un JAR, mais seront compilés avec le projet qui référence le projet de bibliothèque. Cela signifie que je dois également distribuer le code source.

J'ai également lu this post, qui pose la même question mais n'a pas fourni de réponse satisfaisante. Donc: existe-t-il un moyen de compiler et d'empaqueter un ensemble de classes et d'autres fichiers (y compris les mises en page XML, ressources et autres) et de distribuer uniquement ce paquet sans code source? un fichier JAR par un autre développeur?

Répondre

5

J'ai lu sur Bibliothèque Android projets, mais la documentation indique qu'ils ne peuvent être emballés dans un JAR, mais sera compilé avec le projet qui fait référence à la bibliothèque projet. Cela signifie que je dois également distribuer le code source.

Non true. Cela nécessite un peu de travail d'empaquetage supplémentaire, mais vous pouvez compiler votre code dans un JAR et distribuer le JAR dans le répertoire libs/ du projet de bibliothèque.

donc: Est-il possible de compiler et packager un ensemble de classes et d'autres fichiers (y compris mises en page XML, des ressources et des choses) et ne distribuer que ce paquet sans aucune source codes afin qu'il puisse être « référencé "et utilisé comme un fichier JAR par un autre développeur?

Utilisez un projet de bibliothèque Android. J'ai some stuff written up here qui décrit un peu plus des options de conditionnement, ainsi que des pointeurs vers certains "colis" qui suivent les conventions qui y sont décrites.

+0

Merci, cela semble être ce que je suis à la recherche.Même si je ne l'ai lue que rapidement, je vais marquer votre réponse comme une réponse acceptée, parce qu'elle semble me conduire quelque part :-) –

+0

@Thorsten Dittmar: N'hésitez pas à m'envoyer vos commentaires sur les problèmes que vous rencontrez, à travers le Groupe Google «cw-android». Il s'agit d'une réécriture assez récente (et hâtive) de ce matériel pour adopter les projets de bibliothèque comme base, et je suis sûr que j'ai besoin d'ajouter plus d'informations ici. – CommonsWare

+0

@CommonsWare il semble que le lien que vous avez référencé ne fonctionne plus. Y a-t-il un autre endroit où nous pouvons trouver cette information? Si ce n'est pas trop d'informations, il peut être utile d'en poster une partie ici. –

0

Merci pour votre solution. D'après ce que je comprends, vous ne pouvez toujours pas accéder aux ressources privées à la bibliothèque à partir du code de la bibliothèque. Supposons donc que votre bibliothèque possède une ressource de chaîne nommée "my_lib_resource" sous res/values ​​dans la bibliothèque. Vous regroupez ceci dans le pot avec le code source. Pouvez-vous accéder à cette ressource à partir du code source de la bibliothèque en utilisant quelque chose comme:

int id = res.getIdentifier("com.example.mylib:string/my_lib_resource",null,null) 

votre nom d'en supposant package de bibliothèque est com.example.mylib.

Pour moi cela ne fonctionne pas.

Questions connexes