Version de mes propres bibliothèques Android

Je développe actuellement une bibliothèque personnalisée pour Android.

Mon idée est d'avoir une version pour l'application (je la configure actuellement dans le fichier build.gradle et ça marche bien) et une version différente pour la bibliothèque.

  • Barrière de développement mobile à l'entrée
  • Android.support.v4.util.Pair vs android.util.Pair
  • Logcat ne peut pas détecter les noms d'application ou de package
  • MediaPlayer.setDataSource () et prepare () ne fonctionne pas - Android
  • Quelle est la différence entre compileSdkVersion et targetSdkVersion?
  • Position de maintien dans ListView après appeler notifyDataSetChanged
  • Existe-t-il une meilleure pratique pour y parvenir sans avoir fusionné les deux fichiers build.gradle?

    J'ai trouvé quelques questions similaires sur SO mais elles avaient 4 ans et pas très utiles.

  • Lorsque le fragment de commutation avec SwipeRefreshLayout pendant le rafraîchissement, le fragment se bloque, mais fonctionne encore
  • Quel est le but de l'utilisation de traduction dans les chaînes Android?
  • Création d'icônes iOS et Android dans Cordova / PhoneGap
  • Les modes de navigation de la barre d'action sont obsolètes dans Android L
  • ListViewDraggingAnimation cassé sur Android 5 Lollipop
  • Comment accéder au fichier sous le dossier d'actifs?
  • 2 Solutions collect form web for “Version de mes propres bibliothèques Android”

    La solution pour cela n'est pas Git comme vous l'avez probablement déjà compris. OP veut éditer une bibliothèque de manière externe , potentiellement comme un moyen de fournir une API à un tiers sans fournir le code source.

    Ce n'est pas trivial avec Gradle mais c'est faisable.

    Vous pouvez le faire à différents niveaux, je vais vous expliquer le plus simple et le plus simple.

    Définition du numéro de version

    D'abord, vous devez ajouter une variable de version à votre fichier gradle.properties . Vous pouvez définir cette variable avec un simple one-liner:

    version=0.1.0-SNAPSHOT

    Création d'une chaîne de version

    Dans votre projet, créez un fichier appelé versioning.gradle et collez le code suivant à l'intérieur (j'ai trouvé cela en ligne il y a longtemps, je n'ai plus la source):

     ext { /**    * Builds an Android version code from the version of the project.    * This is designed to handle the -SNAPSHOT and -RC format.    *    * Ie during development the version ends with -SNAPSHOT. As the code stabilizes and release nears    * one or many Release Candidates are tagged. These all end with "-RC1", "-RC2" etc.    * And the final release is without any suffix.    * @return    */ buildVersionCode = { //The rules is as follows: //-SNAPSHOT counts as 0 //-RC* counts as the RC number, ie 1 to 98 //final release counts as 99. //Thus you can only have 98 Release Candidates, which ought to be enough for everyone def candidate = "99" def (major, minor, patch) = version.toLowerCase().replaceAll('-', '').tokenize('.') if (patch.endsWith("snapshot")) { candidate = "0" patch = patch.replaceAll("[^0-9]","") } else { def rc (patch, rc) = patch.tokenize("rc") if (rc) { candidate = rc } } (major, minor, patch, candidate) = [major, minor, patch, candidate].collect{it.toInteger()} (major * 1000000) + (minor * 10000) + (patch * 100) + candidate; } } 

    Une fois que vous avez fait cela, assurez-vous d'inclure le fichier versioning.gradle à partir de votre fichier build.gradle principal en ajoutant apply from: '../versioning.gradle' près de l'endroit où le plugin Android est chargé.

    Ensuite, dans votre bloc defaultConfig, vous souhaitez modifier les variables de version par défaut aux valeurs suivantes:

     versionCode buildVersionCode() versionName version 

    Numéro de version dans le nom de fichier de la bibliothèque

    Si vous construisez vraiment une bibliothèque Android, la sortie attendue est un fichier .aar .

    Par conséquent, ajoutez le code gradle suivant à votre fichier build.gradle :

     libraryVariants.all { variant -> variant.outputs.each { output -> output.outputFile = new File( output.outputFile.parent, output.outputFile.name.replace(".aar", "-${defaultConfig.versionName}.aar") ) } } 

    Et c'est tout! Votre fichier de sortie aura un nom avec le numéro de version que vous avez spécifié dans le fichier gradle.proprties .

    Mises en garde

    Cette version sera la version de votre bibliothèque et / ou API de manière très statique. Ce qui signifie qu'il n'y a aucun moyen pour un développeur d'obtenir dynamiquement le numéro de version via un appel de méthode.

    Assurez-vous également d'avoir une méthode disponible qui fournit aux développeurs clients le numéro de version ET assurez-vous de garder les deux en synchronisation. Seulement alors vous avez une bibliothèque correctement versionnée.

    Pourquoi voulez-vous faire cela?

    Si le problème est que vous devez pouvoir prendre différentes actions dans les programmes utilisant la bibliothèque en fonction de la version, créez simplement une constante définitive publique statique quelque part dans la bibliothèque.

    Si la raison est cosmétique (p. Ex., Pour la présentation), il suffit de la mettre dans votre Readme, Changelog ou partout où vous en avez besoin. Briser les fichiers de construction à cette fin est une mauvaise idée.


    Selon votre explication:

    Ma recommandation est de le mettre dans AndroidManifest.xml de la bibliothèque dans ce cas (android: versionCode et android: versionName). C'est ce que Google fait avec beaucoup de leurs propres bibliothèques, et il est inoffensif pour la construction.

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