Gradle

A collection of 4 posts

Gradle

Gradle使特定依赖保持最新版本

编写了一个demo项目,需要导入maven仓库里最新版本的snapshot依赖。 而实际测试发现,如果我给依赖的版本号写的是SNAPSHOT后缀,例如1.0-SNAPSHOT,而不是具体的版本号,那么新版本发布到仓库后,这个demo项目并不会自动更新到最新版本。 经过测试,最后找到了这个解决方案: dependencies中,为需要实时更新的依赖配置为isChanging = true,例如: implementation("group:name:1.0-SNAPSHOT") { isChanging = true } 在build.gradle.kts根层级增加以下内容: configurations.all { resolutionStrategy.cacheChangingModulesFor(0, TimeUnit.SECONDS) } 值得一提的是,解决方案页面里的best answer反而没有用,虽然看到日志里是下载了新版依赖的,但实际运行时用的还是旧版,可能是因为IDE自己也有缓存。

Gradle

解决使用logback 1.2.5以上版本时报错Error during SAX paser configuration

我的Ktor server项目要使用call logging功能,于是通过Gradle导入了最新版本(1.4.4)的logback: implementation("ch.qos.logback:logback-classic:1.4.4") 然而在启动时报了这样的错误: ch.qos.logback.core.joran.spi.JoranException: Error during SAX paser configuration. See https://logback.qos.ch/codes.html#saxParserConfiguration at ch.qos.logback.core.joran.event.

Android

Gradle 3.4.0以上版本自定义apk输出目录和输出文件名

因为需要实现自动化打包,所以需要自定义输出目录(绝对路径)和文件名。 但是搜索了很久,都没有找到有效的办法,很多都是旧版Gradle才能用的语法,新版Gradle编译不通过。 终于还是找到了可用的方法,在module层的build.gradle增加如下代码: android { applicationVariants.all { variant -> variant.outputs.all { output -> variant.packageApplicationProvider.get().outputDirectory = new File("path/to/output/dir") outputFileName = "output_file_name.apk" } } } 需要注意: 1.如果是多种build type或多种flavor同时打包,记得在输出文件夹路径或文件名中引用相关变量。 2.Android Studio调试时,