前言
本人使用的机器是 Mac M1
,在开发 Android
项目时,有一个问题,是如果 Android
项目中有操作 SQLite
数据库的地方,则无论打包还是编译都会报一个错
经过网上搜寻找到了一个解决方案,就是在项目根目录的 build.gradle
中增加
1 2 3 4 5 6 7 8 9 10 11 12
| allprojects { // 如果本地有操作sqlite,会报错 //Execution failed for task ':app:kaptDebugKotlin'. //> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction // > java.lang.reflect.InvocationTargetException (no error message) // https://issuetracker.google.com/issues/174695268?pli=1 configurations.all { resolutionStrategy { force 'org.xerial:sqlite-jdbc:3.34.0' } } }
|
但是这个内容我一直没有提交到过 git
问题
问题来了,我在本地搭建了 Jenkins,并想实现 Android 自动打包,但是从 git
上拉下来的代码并没有上面那段代码。所以我们需要通过构建脚本来将上面这段代码每次构建的时候都追加到 build.gradle
文件中
解决
项目根目录新建 build-gradle-fix.txt
首先找到该项目在 jenkins 中的工作空间目录
在该目录下新建一个文件, build-gradle-fix.txt
,内容如下
需注意要有两个空行
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
allprojects { // 如果本地有操作sqlite,会报错 //Execution failed for task ':app:kaptDebugKotlin'. //> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction // > java.lang.reflect.InvocationTargetException (no error message) // https://issuetracker.google.com/issues/174695268?pli=1 configurations.all { resolutionStrategy { force 'org.xerial:sqlite-jdbc:3.34.0' } } }
|
Jenkins 构建增加一个脚本
将 build.gradle-fix.txt
在每次 jenkins
拉最新代码构建时,都将该文件内容追加到 build.gradle
中
这样就解决了这个问题