android - 排毒 - 无法初始化类 DefaultKotlinSourceSetKt
问题描述
我已按照此处的 Android 排毒指南安装在我的 react-native 项目中 - https://github.com/wix/Detox/blob/master/docs/Introduction.Android.md。但是在运行react-native run-android
构建应用程序之后。我收到以下错误评估项目:detox
:
1: Task failed with an exception.
-----------
* Where:
Build file 'C:\Users\brian\Documents\Projects\react-native-prototyping\node_modules\detox\android\detox\build.gradle' line: 2
* What went wrong:
A problem occurred evaluating project ':detox'.
> Could not initialize class org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSetKt
我查看了他们的问题跟踪器,但没有看到相关问题。查看围绕 Kotlin 的类似问题,似乎我的 kotlin 和 gradle 版本之间存在冲突。但我不确定如何确定要使用的正确版本。我也在./gradlew clean
android文件夹中做了一个无济于事。
问题:
如何解决“无法初始化类 ..sources.DefaultKotlinSourceSetKt”错误?
我的 gradle 和包设置的一些细节如下:
"devDependencies": {
"detox": "^16.5.0",
},
根 build.gradle:
buildscript {
ext {
buildToolsVersion = "28.0.3"
minSdkVersion = 18
compileSdkVersion = 28
targetSdkVersion = 28
kotlinVersion = '1.3.0'
}
repositories {
google()
jcenter()
}
dependencies {
classpath("com.android.tools.build:gradle:3.5.2")
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
应用程序/build.gradle:
android {
compileSdkVersion rootProject.ext.compileSdkVersion
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
defaultConfig {
applicationId "com.testapp"
minSdkVersion rootProject.ext.minSdkVersion
compileSdkVersion rootProject.ext.compileSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
// detox automated tests config
// This will later be used to control the test apk build type
testBuildType System.getProperty('testBuildType', 'debug')
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
}
splits {
abi {
reset()
enable enableSeparateBuildPerCPUArchitecture
universalApk false // If true, also generate a universal APK
include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
}
}
signingConfigs {
debug {
storeFile file('debug.keystore')
storePassword 'android'
keyAlias 'androiddebugkey'
keyPassword 'android'
}
release {
storeFile file(System.getenv("KEYSTORE") ?: "keystore.jks")
storePassword System.getenv("KEYSTORE_PASSWORD")
keyAlias System.getenv("KEY_ALIAS")
keyPassword System.getenv("KEY_PASSWORD")
}
}
buildTypes {
debug {
signingConfig signingConfigs.debug
}
release {
// Caution! In production, you need to generate your own keystore file.
// see https://facebook.github.io/react-native/docs/signed-apk-android.
signingConfig signingConfigs.release
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
// Detox-specific additions to pro-guard
proguardFile "${rootProject.projectDir}/../node_modules/detox/android/detox/proguard-rules-app.pro"
}
}
packagingOptions {
pickFirst "lib/armeabi-v7a/libc++_shared.so"
pickFirst "lib/arm64-v8a/libc++_shared.so"
pickFirst "lib/x86/libc++_shared.so"
pickFirst "lib/x86_64/libc++_shared.so"
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
//noinspection GradleDynamicVersion
implementation "com.facebook.react:react-native:+" // From node_modules
if (enableHermes) {
def hermesPath = "../../node_modules/hermes-engine/android/";
debugImplementation files(hermesPath + "hermes-debug.aar")
releaseImplementation files(hermesPath + "hermes-release.aar")
} else {
implementation jscFlavor
}
androidTestImplementation(project(path: ":detox"))
}
解决方案
结果我不得不在 build.gradle 中更改我的 kotlin 版本以匹配我的 gradle 版本 - buildscript。见 - https://github.com/wix/Detox/blob/master/examples/demo-react-native/android/build.gradle
{
ext {
buildToolsVersion = "28.0.3"
minSdkVersion = 18
compileSdkVersion = 28
targetSdkVersion = 28
kotlinVersion = '1.3.41'
}
repositories {
google()
jcenter()
}
dependencies {
classpath("com.android.tools.build:gradle:3.5.2")
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
推荐阅读
- c# - 未在 SCCM 中更新的 AppModel 应用程序的属性
- java - 从 Android RelativeLayout 中删除填充和边距
- python-3.x - 数据框Python中连续值的位置(索引)
- python - QLayout:尝试添加 QLayout
- android - LowPower AltBeacon 扫描说明
- google-bigquery - 如何根据 BigQuery 中的未来日期预测线性值?
- android - 在多模块项目中使用 Dagger2 DispatchingAndroidInjector
- android - react-native怎么getPackageName?
- v8 - 在 Cobalt 中将 v8 构建为共享库
- sql - 尝试从服务端调用 SAP HANA 存储过程时出错