我应该将 .idea/caches/build_file_checksums.ser 添加到 .gitignore 吗?
Should I add .idea/caches/build_file_checksums.ser to .gitignore?
我更新了 Android Studio from 3.0.1 to 3.1,发现现有项目中有一个不熟悉的文件:
.idea/caches/build_file_checksums.ser
不依赖于您是否将Android Gradle插件更新为the latest 3.1.0;一旦我在 Android Studio 3.1 中打开一个现有项目,它会自动创建文件 build_file_checksums.ser
,即使我保持该项目使用以前的 3.0.1 插件如下。
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
}
我也在AndroidStudio 3.1中新建了一个项目,发现文件build_file_checksums.ser
是从头开始创建的
在撰写本文时,似乎还没有关于此的官方文件。如果有人能找到它,我将不胜感激。
已编辑:
我inspected the content with jdeserialize-1.2, as Samuel指出好像包含了一些系统路径
$ 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"
- "app/build.gradle"
Wh0 已在 Android Studio 3.2 预览版中阐明相同的结果。
https://wh0.github.io/2018/02/17/build-file-checksums-ser.html
您的 .idea 文件夹中的所有文件都与您的 IDE(在本例中为 Android 工作室)相关。正如您所说,这些文件是在项目开始时创建的。所以你应该把这个文件添加到你的 .gitignore 因为这些文件可以包含一些不需要的内容,比如你的绝对路径。
您应该将其添加到 .gitignore
。不要将其包含在您的 git add
.
中
左侧项目window,
(a) 使用下拉菜单将 Android 视图 更改为 the Android project view。
(b) 您可以在文件夹 .idea/caches
.
中看到 build_file_checksums.ser
(c) 打开项目根目录的.gitignore
。 (不要将它与 app 模块的 .gitignore
混淆。)
在右侧.gitignore
内容中,
(d) 添加 /.idea/caches/build_file_checksums.ser
.
JetBrain's guide 告诉你应该分享
- All the files under .idea directory in the project root except the workspace.xml and tasks.xml files which store user specific settings
它还说
You may consider not to share the following:
- .iml files for the Gradle or Maven based projects, since these files will be generated on import
- gradle.xml file, see this discussion
- user dictionaries folder (to avoid conflicts if other developer has the same name)
- XML files under .idea/libraries in case they are generated from Gradle or Maven project
因此,Android Studio 中新项目的默认 .gitignore
是:
*.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/(用户名)/.gradle/gradle.properties"
- "gradle.properties"
- "app/build.gradle"
所以,似乎 the issue 的优先级为 P2,严重性为 S2,并且已经被接受并修复。我期待未来的发布,其中默认 .gitignore
包括
/.idea/caches/build_file_checksums.ser
我更新了 Android Studio from 3.0.1 to 3.1,发现现有项目中有一个不熟悉的文件:
.idea/caches/build_file_checksums.ser
不依赖于您是否将Android Gradle插件更新为the latest 3.1.0;一旦我在 Android Studio 3.1 中打开一个现有项目,它会自动创建文件 build_file_checksums.ser
,即使我保持该项目使用以前的 3.0.1 插件如下。
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
}
我也在AndroidStudio 3.1中新建了一个项目,发现文件build_file_checksums.ser
是从头开始创建的
在撰写本文时,似乎还没有关于此的官方文件。如果有人能找到它,我将不胜感激。
已编辑:
我inspected the content with jdeserialize-1.2, as Samuel指出好像包含了一些系统路径
$ 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"
- "app/build.gradle"
Wh0 已在 Android Studio 3.2 预览版中阐明相同的结果。
https://wh0.github.io/2018/02/17/build-file-checksums-ser.html
您的 .idea 文件夹中的所有文件都与您的 IDE(在本例中为 Android 工作室)相关。正如您所说,这些文件是在项目开始时创建的。所以你应该把这个文件添加到你的 .gitignore 因为这些文件可以包含一些不需要的内容,比如你的绝对路径。
您应该将其添加到 .gitignore
。不要将其包含在您的 git add
.
左侧项目window,
(a) 使用下拉菜单将 Android 视图 更改为 the Android project view。
(b) 您可以在文件夹 .idea/caches
.
中看到 build_file_checksums.ser
(c) 打开项目根目录的.gitignore
。 (不要将它与 app 模块的 .gitignore
混淆。)
在右侧.gitignore
内容中,
(d) 添加 /.idea/caches/build_file_checksums.ser
.
JetBrain's guide 告诉你应该分享
- All the files under .idea directory in the project root except the workspace.xml and tasks.xml files which store user specific settings
它还说
You may consider not to share the following:
- .iml files for the Gradle or Maven based projects, since these files will be generated on import
- gradle.xml file, see this discussion
- user dictionaries folder (to avoid conflicts if other developer has the same name)
- XML files under .idea/libraries in case they are generated from Gradle or Maven project
因此,Android Studio 中新项目的默认 .gitignore
是:
*.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/(用户名)/.gradle/gradle.properties"
- "gradle.properties"
- "app/build.gradle"
所以,似乎 the issue 的优先级为 P2,严重性为 S2,并且已经被接受并修复。我期待未来的发布,其中默认 .gitignore
包括
/.idea/caches/build_file_checksums.ser