[英]How to fix Build.gradle() error in Android Studio when using Jococo as a dependency?
I'm trying to build an open-source project named AmazeFileManager from Github - AmazeFileManager我正在尝试从 Github 构建一个名为 AmazeFileManager 的开源项目 - AmazeFileManager
I have previously built the project in Android Studio using Gradle with我以前使用 Gradle 在 Android Studio 中构建了该项目
Android Gradle plugin: 3.6.4 Android Gradle 插件: 3.6.4
Gradle version: 5.6.4摇篮版本: 5.6.4
When I tried updating the Android plugin and Gradle versions to当我尝试将 Android 插件和 Gradle 版本更新为
Android Gradle Plugin: 4.1.0 Android Gradle 插件: 4.1.0
Gradle Version: 6.5摇篮版本: 6.5
I get this error when rebuilding the project:重建项目时出现此错误:
Cannot set the value of read-only property 'executionData' for task ':app:jacocoTestFdroidDebugUnitTestReport' of type org.gradle.testing.jacoco.tasks.JacocoReport无法为 org.gradle.testing.jacoco.tasks.JacocoReport 类型的任务 ':app:jacocoTestFdroidDebugUnitTestReport' 设置只读属性 'executionData' 的值
What can I do to resolve this error so I can successfully rebuild the project?我该怎么做才能解决此错误,以便成功重建项目?
Below are the snippets of the Gradle files used:以下是所使用的 Gradle 文件的片段:
build.gradle (Module:app) build.gradle(模块:app)
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
classpath 'com.dicedmelon.gradle:jacoco-android:0.1.4'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
plugins {
id "com.diffplug.gradle.spotless" version "4.3.0"
}
allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
maven { url "https://jcenter.bintray.com" }
mavenCentral()
}
tasks.withType(Test) {
maxParallelForks = 2
maxHeapSize = "2g"
forkEvery = 2
}
}
spotless {
java {
licenseHeaderFile 'spotless.license-java'
target 'app/src/**/*.java'
googleJavaFormat('1.7')
removeUnusedImports() // removes any unused imports
importOrder 'java', 'javax', 'org', 'com', 'android', 'androidx', ''
}
}
configurations {
robo16
robo17
robo18
robo19
robo21
robo22
robo23
robo24
robo25
robo26
robo27
robo28
robo29
}
dependencies {
robo16 "org.robolectric:android-all:4.1.2_r1-robolectric-r1"
robo17 "org.robolectric:android-all:4.2.2_r1.2-robolectric-r1"
robo18 "org.robolectric:android-all:4.3_r2-robolectric-r1"
robo19 "org.robolectric:android-all:4.4_r1-robolectric-r2"
robo21 "org.robolectric:android-all:5.0.2_r3-robolectric-r0"
robo22 "org.robolectric:android-all:5.1.1_r9-robolectric-r2"
robo23 "org.robolectric:android-all:6.0.1_r3-robolectric-r1"
robo24 "org.robolectric:android-all:7.0.0_r1-robolectric-r1"
robo25 "org.robolectric:android-all:7.1.0_r7-robolectric-r1"
robo26 "org.robolectric:android-all:8.0.0_r4-robolectric-r1"
robo27 "org.robolectric:android-all:8.1.0-robolectric-4611349"
robo28 "org.robolectric:android-all:9-robolectric-4913185-2"
robo29 "org.robolectric:android-all:10-robolectric-5803371"
}
def robolectricDependencies = "${rootProject.buildDir.path}/robolectric"
task fetchRobolectricDependencies(type: Copy) {
from configurations.robo16
from configurations.robo17
from configurations.robo18
from configurations.robo19
from configurations.robo21
from configurations.robo22
from configurations.robo23
from configurations.robo24
from configurations.robo25
from configurations.robo26
from configurations.robo27
from configurations.robo28
from configurations.robo29
into robolectricDependencies
}
subprojects {
afterEvaluate {
if (project.plugins.hasPlugin("com.android.application") || project.plugins.hasPlugin("com.android.library")) {
android {
testOptions.unitTests.all {
systemProperty 'robolectric.offline', 'true'
systemProperty 'robolectric.dependency.dir', robolectricDependencies
}
}
tasks.withType(Test) {
it.dependsOn fetchRobolectricDependencies
}
}
if (project.plugins.hasPlugin("jacoco-android")){
android {
testOptions.unitTests.all {
jacoco {
excludes = ['jdk.internal.*']
}
}
}
}
dependencies {
compileOnly 'com.github.pengrad:jdk9-deps:1.0'
if (project.hasProperty('kapt')) {
kapt 'javax.xml.bind:jaxb-api:2.3.1'
kapt 'com.sun.xml.bind:jaxb-core:2.3.0.1'
kapt 'com.sun.xml.bind:jaxb-impl:2.3.2'
}
annotationProcessor 'javax.xml.bind:jaxb-api:2.3.1'
annotationProcessor 'com.sun.xml.bind:jaxb-core:2.3.0.1'
annotationProcessor 'com.sun.xml.bind:jaxb-impl:2.3.2'
}
}
}
build.gradle(Project:AmazeFileManager-release-3.5) build.gradle(项目:AmazeFileManager-release-3.5)
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
classpath 'com.dicedmelon.gradle:jacoco-android:0.1.4'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
plugins {
id "com.diffplug.gradle.spotless" version "4.3.0"
}
allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
maven { url "https://jcenter.bintray.com" }
mavenCentral()
}
tasks.withType(Test) {
maxParallelForks = 2
maxHeapSize = "2g"
forkEvery = 2
}
}
spotless {
java {
licenseHeaderFile 'spotless.license-java'
target 'app/src/**/*.java'
googleJavaFormat('1.7')
removeUnusedImports() // removes any unused imports
importOrder 'java', 'javax', 'org', 'com', 'android', 'androidx', ''
}
}
configurations {
robo16
robo17
robo18
robo19
robo21
robo22
robo23
robo24
robo25
robo26
robo27
robo28
robo29
}
dependencies {
robo16 "org.robolectric:android-all:4.1.2_r1-robolectric-r1"
robo17 "org.robolectric:android-all:4.2.2_r1.2-robolectric-r1"
robo18 "org.robolectric:android-all:4.3_r2-robolectric-r1"
robo19 "org.robolectric:android-all:4.4_r1-robolectric-r2"
robo21 "org.robolectric:android-all:5.0.2_r3-robolectric-r0"
robo22 "org.robolectric:android-all:5.1.1_r9-robolectric-r2"
robo23 "org.robolectric:android-all:6.0.1_r3-robolectric-r1"
robo24 "org.robolectric:android-all:7.0.0_r1-robolectric-r1"
robo25 "org.robolectric:android-all:7.1.0_r7-robolectric-r1"
robo26 "org.robolectric:android-all:8.0.0_r4-robolectric-r1"
robo27 "org.robolectric:android-all:8.1.0-robolectric-4611349"
robo28 "org.robolectric:android-all:9-robolectric-4913185-2"
robo29 "org.robolectric:android-all:10-robolectric-5803371"
}
def robolectricDependencies = "${rootProject.buildDir.path}/robolectric"
task fetchRobolectricDependencies(type: Copy) {
from configurations.robo16
from configurations.robo17
from configurations.robo18
from configurations.robo19
from configurations.robo21
from configurations.robo22
from configurations.robo23
from configurations.robo24
from configurations.robo25
from configurations.robo26
from configurations.robo27
from configurations.robo28
from configurations.robo29
into robolectricDependencies
}
subprojects {
afterEvaluate {
if (project.plugins.hasPlugin("com.android.application") || project.plugins.hasPlugin("com.android.library")) {
android {
testOptions.unitTests.all {
systemProperty 'robolectric.offline', 'true'
systemProperty 'robolectric.dependency.dir', robolectricDependencies
}
}
tasks.withType(Test) {
it.dependsOn fetchRobolectricDependencies
}
}
if (project.plugins.hasPlugin("jacoco-android")){
android {
testOptions.unitTests.all {
jacoco {
excludes = ['jdk.internal.*']
}
}
}
}
dependencies {
compileOnly 'com.github.pengrad:jdk9-deps:1.0'
if (project.hasProperty('kapt')) {
kapt 'javax.xml.bind:jaxb-api:2.3.1'
kapt 'com.sun.xml.bind:jaxb-core:2.3.0.1'
kapt 'com.sun.xml.bind:jaxb-impl:2.3.2'
}
annotationProcessor 'javax.xml.bind:jaxb-api:2.3.1'
annotationProcessor 'com.sun.xml.bind:jaxb-core:2.3.0.1'
annotationProcessor 'com.sun.xml.bind:jaxb-impl:2.3.2'
}
}
}
build.gradle(Module:commons_compress_7z) build.gradle(模块:commons_compress_7z)
apply plugin: 'com.android.library'
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 14
targetSdkVersion 28
versionCode 1
versionName "1.0.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard.cfg'
}
}
}
dependencies {
implementation 'org.apache.commons:commons-compress:1.18'
implementation 'org.tukaani:xz:1.8'
}
If you haven't already found the cause for this, it is because of changes in Gradle 6, which the new AGP uses.如果您还没有找到造成这种情况的原因,那是因为新 AGP 使用的 Gradle 6 发生了变化。
For more info, check out this Medium post or more specificallythis PR in the jacoco-android
library that you are using to add the jacoco tasks.有关更多信息,请查看此Medium 帖子或更具体地说是用于添加 jacoco 任务的jacoco-android
库中的此 PR 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.