Должен ли я добавлять.idea/caches/build_file_checksums.ser в.gitignore?

Я обновил свою Android-студию с 3.0.1 до 3.1 и заметил незнакомый файл в моем существующем проекте:

    .idea/caches/build_file_checksums.ser

Это не зависит от того, обновляете ли вы плагин Android Gradle до последней версии 3.1.0; как только я открыл существующий проект в Android Studio 3.1, он автоматически создал файл build_file_checksums.ser, даже если бы я сохранил проект для использования предыдущего 3.0.1 плагина следующим образом.

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

Я также создал новый проект в Android Studio 3.1 и обнаружил, что файл build_file_checksums.ser был создан с самого начала.

На момент написания статьи, по-видимому, официальных документов по этому вопросу нет. Буду признателен, если кто-нибудь сможет его найти.


Отредактировано:

Я осмотрел содержимое с jdeserialize-1.2, а Самуэль отметил, что, кажется, включают некоторые системные пути.

$ 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

$ 

Вы можете увидеть следующие строки в java.util.HashMap.

  • "Settings.gradle"
  • "Build.gradle"
  • "local.properties"
  • "/Users/qtmfld/.gradle/gradle.properties"
  • "gradle.properties"
  • "Приложение /build.gradle"

WH0 уточнил тот же результат в Android Studio 3.2 Preview.
https://wh0.github.io/2018/02/17/build-file-checksums-ser.html

Ответ 1

Все файлы в ваших папках.idea связаны с вашей IDE (в этом случае студия Android). И, как вы сказали, эти файлы создаются при открытии проекта. Поэтому вы должны добавить этот файл в свой.gitignore, потому что эти файлы могут содержать некоторое содержимое, которое не нужно, как ваш абсолютный путь.

Ответ 2

Вы должны добавить его в .gitignore. Не включайте его в свой git add.

В левом окне проекта,

(a) измените представление Android на представление проекта Android, в раскрывающемся меню.
(b) Вы можете увидеть build_file_checksums.ser в папке .idea/caches.
(c) Откройте .gitignore корневого каталога проекта. (Не путайте его с .gitignore модуля приложения.)

В правом содержимом .gitignore,

(d) добавить /.idea/caches/build_file_checksums.ser.

enter image description here


Руководство JetBrain сообщило, что вы должны делиться

  • Все файлы в каталоге.idea в корне проекта, за исключением файлов workspace.xml и tasks.xml, которые сохраняют пользовательские настройки

и он также сказал

Вы можете не делиться следующим:

  • .iml для проектов на основе Gradle или Maven, поскольку эти файлы будут созданы при импорте
  • Файл gradle.xml, см. эту дискуссию
  • папка пользовательских словарей (во избежание конфликтов, если другой разработчик имеет то же имя)
  • XML файлы в .idea/libraries в случае их генерации из проекта Gradle или Maven

Поэтому по умолчанию .gitignore для новых проектов в Android Studio:

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

Но файл build_file_checksums.ser является сериализованным объектом Java, который содержит хеш и build_file_checksums.ser метку:

  • "Settings.gradle"
  • "Build.gradle"
  • "local.properties"
  • "/Пользователи/(Имя пользователя)/. Gradle/gradle.properties"
  • "gradle.properties"
  • "Приложение /build.gradle"

Таким образом, кажется, что проблема была приоритетной P2 и серьезностью S2, и она уже принята и исправлена. Я с нетерпением жду будущего выпуска, в котором дефолтный .gitignore включает

/.idea/caches/build_file_checksums.ser