相关疑难解决方法(0)

从Gradle构建中排除临时Realm文件

Realm提供了一个名为"Realm Studio"的数据库查看器,允许用户浏览其数据库的内容.当应用程序用于查看数据库时,它会在数据库目录中创建几个"临时"文件,即:

  • 一个.realm.lock文件.
  • 一个.realm.note文件.
  • 一个.realm.management目录包含:
    • 一个access_control.control.mx文件.
    • 一个access_control.new_commit.cv文件.
    • 一个access_control.pick_writer.cv文件.
    • 一个access_control.write.mx文件.

在Android环境中,通过将数据库放在/assets目录中,有时会将预先存在的Realm数据库与应用程序一起提供.因此,当使用Realm Studio查看此数据库时,将生成上述文件/assets.由于未知原因,这会导致Gradle在:app:generateDebugAssets任务之后无限期挂起,显然是在:app:mergeDebugAssets任务中.

因此,我想找到一种方法从构建中排除这些文件.我尝试了几种方法,例如:

applicationVariants.all { variant ->
    if (variant.buildType.name == 'debug') {
        variant.mergeAssets.doLast {
            delete(fileTree(dir: variant.mergeAssets.outputDir, includes: ['**/*.cv', '**/*.mx', '**/*.lock', '**/*.note']))
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和其他方法,如:

sourceSets.main.assets.exclude 'appData.realm.management'
sourceSets.main.assets.exclude 'appData.realm.management/access_control.control.mx'
sourceSets.main.assets.exclude 'appData.realm.management/access_control.new_commit.cv'
sourceSets.main.assets.exclude 'appData.realm.management/access_control.pick_writer.cv'
sourceSets.main.assets.exclude 'appData.realm.management/access_control.write.mx'
sourceSets.main.assets.exclude 'appData.realm.lock'
sourceSets.main.assets.exclude 'appData.realm.note'
Run Code Online (Sandbox Code Playgroud)

无济于事.

如何在运行构建时指示Gradle排除这些文件?

编辑:重复输出的小片段./gradlew -d app:mergeDebugAssets:

[org.gradle.cache.internal.DefaultFileLockManager] Waiting …
Run Code Online (Sandbox Code Playgroud)

android realm gradle build.gradle android-gradle-plugin

7
推荐指数
3
解决办法
387
查看次数