60 votes

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

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

    .idea/caches/build_file_checksums.ser

Il ne dépend pas de savoir si vous mettez à jour Android plugin Gradle pour la dernière 3.1.0; une fois que j'ai ouvert un projet existant dans Android Studio 3.1, il est automatiquement créé le fichier build_file_checksums.ser, même si j'ai gardé le projet d'utiliser l'ancienne 3.0.1 plugin 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 a constaté que le fichier build_file_checksums.ser a été créé à partir du début.

Au moment de la rédaction, il semble y avoir pas de documents officiels sur cette. Je vous serais reconnaissant si quelqu'un pouvait le trouver.


Modifié:

J'ai inspecté le contenu avec jdeserialize-1.2, que Samuel a souligné qu'il semble inclure certains chemins d'accès au 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 de caractères suivantes dans l' java.util.HashMap.

  • "paramètres".gradle"
  • "construire.gradle"
  • "locales.les propriétés"
  • "/Users/qtmfld/.gradle/gradle.les propriétés"
  • "gradle.les propriétés"
  • "application/build.gradle"

Wh0 a précisé le même résultat sur Android Studio 3.2 Aperçu.
https://wh0.github.io/2018/02/17/build-file-checksums-ser.html

30voto

qtmfld Points 1263

Vous devez l'ajouter à .gitignore. Ne pas l'inclure dans votre git add.

Dans la partie gauche de Projet fenêtre,

(a) variation de l' Android de vue de l' Android de vue du projet, 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 pas confondre avec .gitignore de l' application du module.)

Sur le côté droit .gitignore de contenu,

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

enter image description here


JetBrain guide dit que vous devriez partager

  • Tous les fichiers sous .idée de répertoire dans la racine du projet à l'exception de la workspace.xml et tasks.xml les fichiers qui stockent les paramètres spécifiques à l'utilisateur

et il a dit aussi

Vous pouvez envisager de ne pas partager les suivantes:

  • .iml fichiers pour le Gradle ou Maven en fonction des projets, étant donné que ces fichiers seront générés lors de l'importation
  • gradle.xml fichier, voir cette discussion
  • l'utilisateur dictionnaires dossier (pour éviter les conflits si un autre développeur a le même nom)
  • Des fichiers XML sous .idée/bibliothèques dans le cas où ils sont générés à partir de Gradle ou Maven du projet

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

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

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

  • "paramètres".gradle"
  • "construire.gradle"
  • "locales.les propriétés"
  • "/Users/(Nom D'Utilisateur)/.gradle/gradle.les propriétés"
  • "gradle.les propriétés"
  • "application/build.gradle"

Donc, il semble que la question a été la priorité de la P2 et de la gravité S2, et a déjà été acceptés et fixe. Je me réjouis à l'avenir de presse, dans lequel la valeur par défaut .gitignore comprend

/.idea/caches/build_file_checksums.ser

27voto

Itoun Points 1171

Tous les fichiers de vos dossiers .idea sont liés à votre IDE (studio Android 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 .gitignore car ces fichiers peuvent contenir du contenu qui n'est pas nécessaire comme votre chemin absolu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X