web-dev-qa-db-fra.com

Devrais-je ajouter .idea / caches / build_file_checksums.ser à .gitignore?

J'ai mis à jour mon Android Studio de 3.0.1 à 3.1 , et j'ai remarqué un fichier inconnu dans mon projet existant:

    .idea/caches/build_file_checksums.ser

Cela ne dépend pas de la mise à jour du plug-in Android Gradle vers la dernière version 3.1. ; une fois que j’ouvrais un projet existant dans Android Studio 3.1, le fichier build_file_checksums.ser était automatiquement créé, même si je conservais le projet pour utiliser le plug-in 3.0.1 précédent comme suit.

    dependencies {
        classpath 'com.Android.tools.build:gradle:3.0.1'
    }

J'ai également créé un nouveau projet dans Android Studio 3.1 et constaté que le fichier build_file_checksums.ser avait été créé depuis le début.

Au moment de la rédaction de cet article, il ne semble y avoir aucun document officiel à ce sujet. Je l'apprécierais si quelqu'un pouvait le trouver.


Édité:

Je inspecté le contenu avec jdeserialize-1.2 , car Samuel a souligné qu'il semble inclure certains chemins système.

$ Java -jar ~/Downloads/jdeserialize-1.2.jar .idea/caches/build_file_checksums.ser 
read: com.Android.tools.idea.gradle.project.ProjectBuildFileChecksums _h0x7e0002 = r_0x7e0000;  
//// BEGIN stream content output
com.Android.tools.idea.gradle.project.ProjectBuildFileChecksums _h0x7e0002 = r_0x7e0000;  
//// END stream content output

//// BEGIN class declarations (excluding array classes)
class Java.util.HashMap implements Java.io.Serializable {
    float loadFactor;
    int threshold;
}

class com.Android.tools.idea.gradle.project.ProjectBuildFileChecksums implements Java.io.Serializable {
    long myLastGradleSyncTimestamp;
    Java.util.Map myFileChecksums;
}

//// END class declarations

//// BEGIN instance dump
[instance 0x7e0004: 0x7e0003/Java.util.HashMap
  object annotations:
    Java.util.HashMap
        [blockdata 0x00: 8 bytes]
        [String 0x7e0005: "settings.gradle"]
        [array 0x7e0007 classdesc [cd 0x7e0006: name [B uid -5984413125824719648]: [arraycoll sz 16 -89, -2, 26, -61, -111, 105, -75, -27, 40, 90, 94, 83, 102, 47, 37, 27]
        [String 0x7e0008: "build.gradle"]
        [array 0x7e0009 classdesc [cd 0x7e0006: name [B uid -5984413125824719648]: [arraycoll sz 16 70, 101, -14, 32, 100, -60, -85, -103, 73, -86, 15, 54, -45, 125, 50, 39]
        [String 0x7e000a: "local.properties"]
        [array 0x7e000b classdesc [cd 0x7e0006: name [B uid -5984413125824719648]: [arraycoll sz 16 -107, 64, 60, -33, -18, 18, 56, -84, 15, 0, -86, -73, -27, 127, -94, 27]
        [String 0x7e000c: "/Users/qtmfld/.gradle/gradle.properties"]
        [array 0x7e000d classdesc [cd 0x7e0006: name [B uid -5984413125824719648]: [arraycoll sz 16 -44, 29, -116, -39, -113, 0, -78, 4, -23, -128, 9, -104, -20, -8, 66, 126]
        [String 0x7e000e: "gradle.properties"]
        [array 0x7e000f classdesc [cd 0x7e0006: name [B uid -5984413125824719648]: [arraycoll sz 16 16, -69, 118, 80, -49, -19, 41, -8, 56, -86, 64, -63, 112, -14, 98, 47]
        [String 0x7e0010: "app/build.gradle"]
        [array 0x7e0011 classdesc [cd 0x7e0006: name [B uid -5984413125824719648]: [arraycoll sz 16 -3, -11, 63, -26, 67, -41, -100, 33, 85, -59, -49, -3, -90, 53, -106, 94]

  field data:
    0x7e0003/Java.util.HashMap:
        threshold: 12
        loadFactor: 0.75
]
[instance 0x7e0002: 0x7e0000/com.Android.tools.idea.gradle.project.ProjectBuildFileChecksums
  field data:
    0x7e0000/com.Android.tools.idea.gradle.project.ProjectBuildFileChecksums:
        myFileChecksums: r0x7e0004: Java.util.HashMap _h0x7e0004 = r_0x7e0003;  
        myLastGradleSyncTimestamp: 1522297024540
]
//// END instance dump

$ 

Vous pouvez voir les chaînes suivantes dans Java.util.HashMap.

  • "settings.gradle"
  • "build.gradle"
  • "local.properties"
  • "/Users/qtmfld/.gradle/gradle.properties"
  • "gradle.properties"
  • "app/build.gradle"

Wh a clarifié le même résultat sur Android Studio 3.2 Preview.
https://wh0.github.io/2018/02/17/build-file-checksums-ser.html

52
qtmfld

Tous les fichiers de vos dossiers .idea sont liés à votre IDE (Android Studio dans ce cas). Et comme vous l'avez dit, ces fichiers sont créés à l'ouverture du projet. Vous devez donc ajouter ce fichier à votre fichier .gitignore, car ces fichiers peuvent contenir du contenu qui n’est pas nécessaire, comme votre chemin absolu.

20
Itoun

Vous devriez l'ajouter à .gitignore. Ne l'incluez pas dans votre git add.

Dans la fenêtre de gauche Projet ,

( a ) remplacez la vue Android par la Vue du projet Android , avec le menu déroulant.
( b ) Vous pouvez voir build_file_checksums.ser dans le dossier .idea/caches.
( c ) Ouvrez .gitignore du répertoire racine du projet. (Ne le confondez pas avec .gitignore du module app .)

Dans le contenu .gitignore à droite,

( d ) ajoutez /.idea/caches/build_file_checksums.ser.

enter image description here


Guide de JetBrain dit que vous devriez partager

  • Tous les fichiers du répertoire . Idea à la racine du projet à l’exception de le workspace.xml et tasks.xml fichiers contenant les paramètres spécifiques à l'utilisateur

et il a également dit

Vous pouvez envisager de ne pas partager les éléments suivants:

  • . iml fichiers pour le Gradle ou Projets basés sur Maven , car ces fichiers seront générés à l’importation
  • gradle.xml fichier, voir cette discussion
  • dossier des dictionnaires utilisateur (pour éviter les conflits si un autre développeur porte le même nom)
  • Fichiers XML sous . Idea/libraries dans le cas où ils sont générés à partir de Gradle ou Maven projet

Par conséquent, .gitignore par défaut pour les nouveaux projets dans Android Studio est:

*.iml
.gradle
/local.properties
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
.DS_Store
/build
/captures
.externalNativeBuild

Cependant, le fichier build_file_checksums.ser est un objet sérialisé Java, qui contient le hachage et l'horodatage de:

  • "settings.gradle"
  • "build.gradle"
  • "local.properties"
  • "/ Utilisateurs/( Nom d'utilisateur ) /. Gradle/gradle.properties"
  • "gradle.properties"
  • "app/build.gradle"

Ainsi, il semble que le problème était la priorité P2 et la gravité S2, et a déjà été accepté et corrigé. J'attends avec impatience la prochaine version, dans laquelle la valeur par défaut .gitignore comprend

/.idea/caches/build_file_checksums.ser
26
qtmfld