web-dev-qa-db-fra.com

Android Bibliothèques Jar

Comment configurez-vous un projet qui peut aboutir à un fichier de bibliothèque jar qui peut être utilisé pour Android? Je souhaite créer une bibliothèque personnalisée pour tous les projets.

Quelques autres questions:

  1. Doit-il être compilé avec une version spécifique de Android sdk?
  2. Lorsqu'un package Android est compilé avec une bibliothèque de jar, les classes nécessaires pour travailler avec le code sont-elles compilées avec le code principal dans l'apk ou le jar entier est-il inclus?
  3. Y a-t-il des optimisations ou des pièges notables à connaître avec l'utilisation d'un bocal au lieu d'intégrer directement le code?
  4. Le pot doit-il être signé comme le doit l'apk?
54
Jeremy Edwards

Google vient de publier une nouvelle version du SDK qui gère les bibliothèques partagées!

https://developer.Android.com/tools/projects/projects-Eclipse.html#SettingUpLibraryProject

ADT 0.9.7 (mai 2010)

Projets de bibliothèque:
Le plug-in ADT prend désormais en charge l'utilisation de projets de bibliothèque pendant le développement, une capacité qui vous permet de stocker le code d'application et les ressources partagées Android dans un projet de développement distinct. Vous pouvez ensuite référencer le projet de bibliothèque à partir d'autres projets Android et, au moment de la génération, les outils compilent le code et les ressources partagés dans le cadre des applications dépendantes. Plus d'informations sur cette fonctionnalité sont disponibles dans le document Developing in Eclipse with ADT. Si vous ne développez pas dans Eclipse, SDK Tools r6 fournit le support de projet de bibliothèque équivalent via le système de génération Ant.

29
ddcruver

Il n'y a rien de spécial que vous devez faire pour la configuration de votre projet pour créer un fichier jar qui fonctionnera dans une application Android. Créez simplement un projet normal Java dans Éclipse.

  1. Il n'a pas besoin d'être compilé avec Android du tout. Vous pouvez inclure n'importe quel fichier jar tant qu'il ne fait pas référence à des classes qui ne sont pas incluses dans Android. Incluez simplement votre fichier jar dans le chemin de génération de vos projets Android dans Eclipse, et il sera automatiquement inclus dans votre fichier APK.

  2. Pas sûr, mais je suppose que toutes les classes du fichier jar sont incluses dans l'APK.

  3. Je ne pense pas que l'inclusion directe de certaines classes dans un bocal par rapport au projet fera une différence dans l'APK résultant.

29
Mark B

Ce travail pour moi !!!. si vous souhaitez utiliser un fichier .jar dans votre application à partir d'un projet de bibliothèque qui utilise des ressources telles que attrs.xml (et supposons que d'autres comme les dispositions, les chaînes, etc.) génèrent un R.Java. vous devriez dans Eclipse aller à export->Java/Jar file-> et cochez Exporter tous les dossiers de sortie pour vérifier projects -> Finish... cela garantira qu'au moment de l'exécution, votre application qui utilise ce pot ne génère pas d'exception pour les classes et les ressources manquantes.

Bien sûr, pour inclure le pot dans votre nouveau projet, allez à. project properties-> Java build path -> Libraries -> Add external jar -> et vous avez terminé.

J'espère que cette aide!

5
cags

Je me suis posé la même question: puis-je exporter et réutiliser une mise en page dans Android. J'ai essayé ce qui suit: exporter un projet avec des ressources XML dans un fichier JAR, puis essayer d'accéder à une mise en page via R.layout. Bien sûr, cela n'a pas fonctionné, car R.layout.main était un entier, le même entier que celui associé à la mise en page unique (relative.xml) définie dans R.layout du projet Host.

Le Android SDK compile les fichiers xml de mise en page dans les ressources View, et comme les fichiers XML dans le fichier JAR inclus ne sont pas des fichiers xml de mise en page, ils ne sont pas compilés et aucun ID ne leur est associé dans R.layout .

Si vous souhaitez exporter une mise en page de votre projet, vous devez l'exporter au format XML et l'importer dans le nouveau projet en tant que ressource de mise en page, et non dans le cadre d'une bibliothèque externe.

Si vous souhaitez réutiliser des dispositions à partir d'un fichier JAR, vous devez créer un sous-calques d'une vue et créer la disposition à partir du code. Vous pouvez ensuite l'instancier et définir l'instance créée comme vue de l'activité, ou ajouter l'instance à la vue de votre activité.

5

pour créer un fichier jar, vous devez utiliser l'option Exporter d'Eclipse. Dans la boîte de dialogue d'exportation, choisissez Java et le fichier JAR de sous-option. Ensuite, un assistant s'affiche où vous devez effectuer certaines sélections. Vous devez spécifier l'emplacement où le fichier jar sera stocké.

Une erreur que j'ai commise la première fois que j'ai créé un fichier jar était d'inclure le manifeste Android. Lors de l'ajout du fichier jar créé, j'ai eu un conflit de manifeste double Android.

3
Stefaan V

Vous pouvez utiliser une méthode personnalisée pour atteindre le fichier R dynamiquement, l'exemple de lien est ci-dessous.

Empaquetage Android dans un fichier Jar distribuable

public static int getResourseIdByName(String packageName, String className, String name) {
   Class r = null;
   int id = 0;
try {
    r = Class.forName(packageName + ".R");

    Class[] classes = r.getClasses();
    Class desireClass = null;

    for (int i = 0; i < classes.length; i++) {
        if(classes[i].getName().split("\\$")[1].equals(className)) {
            desireClass = classes[i];

            break;
        }
    }

    if(desireClass != null)
        id = desireClass.getField(name).getInt(desireClass);
} catch (ClassNotFoundException e) {
    e.printStackTrace();
} catch (IllegalArgumentException e) {
    e.printStackTrace();
} catch (SecurityException e) {
    e.printStackTrace();
} catch (IllegalAccessException e) {
    e.printStackTrace();
} catch (NoSuchFieldException e) {
    e.printStackTrace();
}

return id;
}
1
ymutlu

Si vous regardez dans le fichier Android.jar sous le fichier plateformes/Android-X.X/Android.jar, il inclut des éléments XML de mise en page, vous devriez donc pouvoir en créer un également. Je ne sais pas exactement comment vous faites cela et comment vous les référencez dans l'autre projet.

0
ddcruver