首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该在.gitignore中添加. .idea/caches/build_file_checksums.ser吗?

我应该在.gitignore中添加. .idea/caches/build_file_checksums.ser吗?
EN

Stack Overflow用户
提问于 2018-03-29 13:45:22
回答 2查看 15.6K关注 0票数 60

我更新了我的Android 从3.0.1到3.1,并注意到在我现有的项目中有一个不熟悉的文件:

代码语言:javascript
复制
.idea/caches/build_file_checksums.ser

这并不取决于您是否将Android插件更新为最新的3.1.0;一旦我在AndroidStudio3.1中打开了一个现有项目,它就会自动创建文件build_file_checksums.ser,即使我将该项目保留为使用之前的3.0.1插件,如下所示。

代码语言:javascript
复制
dependencies {
    classpath 'com.android.tools.build:gradle:3.0.1'
}

我还在AndroidStudio3.1中创建了一个新项目,并发现文件build_file_checksums.ser是从一开始就创建的。

在编写本报告时,似乎没有关于这方面的正式文件。如果有人能找到的话我会很感激的。

编辑:

正如检阅指出的那样,jdeserialize-1.2似乎包含了一些系统路径。

代码语言:javascript
复制
$ 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在AndroidStudio3.2Preview上澄清了同样的结果。

https://wh0.github.io/2018/02/17/build-file-checksums-ser.html

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-29 13:55:42

.idea文件夹中的所有文件都与您的IDE相关(本例中为Android)。正如您所说,这个文件是在项目开始时创建的。所以您应该将这个文件添加到您的.gitignore中,因为这些文件可以包含一些不必要的内容,比如您的绝对路径。

票数 27
EN

Stack Overflow用户

发布于 2018-05-07 04:40:54

您应该将它添加到.gitignore中。不要将它包括在您的git add中。

在左侧的Project窗口中,

(a)使用下拉菜单将Android视图更改为Android项目视图

(b)您可以在文件夹.idea/caches中看到build_file_checksums.ser

(c)打开项目根目录的.gitignore。(不要将其与.gitignore应用程序模块混淆。)

在右侧的.gitignore内容中,

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

JetBrain指南告诉你应该分享

  • 项目根workspace.xml.idea目录下的所有文件,但存储用户特定设置的和tasks.xml文件除外。

它还说

您可能认为不共享如下:

  • .iml文件用于基于GradleMaven的项目,因为这些文件将在导入时生成
  • gradle.xml文件,请参阅本讨论
  • 用户dictionaries文件夹(如果其他开发人员具有相同的名称,则避免冲突)
  • .idea/libraries下的XML文件,以防它们是从Gradle或Maven项目生成的

因此,Android中新项目的默认.gitignore是:

代码语言:javascript
复制
*.iml
.gradle
/local.properties
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
.DS_Store
/build
/captures
.externalNativeBuild

但是,build_file_checksums.ser文件是一个Java序列化对象,它包含以下的散列和时间戳:

  • "settings.gradle“
  • "build.gradle“
  • "local.properties“
  • “/Users/( Name)/.gradle/gradle.properties”用户)
  • "gradle.properties“
  • “应用/build.gradle”

因此,问题所在似乎是优先级P2和严重性S2,并且已经被接受和修复了。我期待着将来的发行版,其中默认的.gitignore包括

代码语言:javascript
复制
/.idea/caches/build_file_checksums.ser
票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49557737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档