kotlin协程库报错“Program type already present”解决

简介: 最近在学习kotlin,学习到协程库这一块了,针对Android的话就是coroutines-android库。本来学习就不容易了,再加上kotlin现在还处于快速变化期,那个酸爽简直了,废话不多说,进入正题。

kotlin协程库报错“Program type already present”解决

最近在学习kotlin,学习到协程库这一块了,针对Android的话就是coroutines-android库。本来学习就不容易了,再加上kotlin现在还处于快速变化期,那个酸爽简直了,废话不多说,进入正题。

kotlinx.coroutines的github地址

协程库中关于Android的文档说明

为了在Android中kotlin协程库的一些特性,我们就需要引入coroutines-android库,代码如下:
ps: 这里我使用的kotlin-gradle-plugin插件和kotlinx-coroutines-android的版本都是最新的,分别是1.2.61和0.25.0.
1、build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlin_version = '1.2.61'
    ext.coroutines_version = '0.25.0'
    repositories {
        mavenCentral()
        jcenter()
        google()
        maven { url 'https://maven.google.com' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.4'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        mavenCentral()
        jcenter()
        google()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

2、app/build.gradle:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.example.tinytongtong.kotlincoroutineapplication"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    // Configure only for each module that uses Java 8
    // language features (either in its source code or
    // through dependencies).
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version"

    //okhttp
    api 'com.squareup.okhttp3:okhttp:3.11.0'
    api 'com.squareup.okhttp3:logging-interceptor:3.4.1'
}

kotlin {
    experimental {
        coroutines "enable"
    }
}

2、配置好了之后,先sync再run,然后的Build窗口就会出现下面这个页面:

kotlin协程库报错

问题解决:

最简单粗暴的方式就是回退版本,如下所示:

ext.kotlin_version = '1.2.61'
ext.coroutines_version = '0.25.0'

接下来还是sync --> run,代码就可以跑起来了。

相关文章
|
7月前
|
存储 缓存 Android开发
安卓Jetpack Compose+Kotlin, 使用ExoPlayer播放多个【远程url】音频,搭配Okhttp库进行下载和缓存,播放完随机播放下一首
这是一个Kotlin项目,使用Jetpack Compose和ExoPlayer框架开发Android应用,功能是播放远程URL音频列表。应用会检查本地缓存,如果文件存在且大小与远程文件一致则使用缓存,否则下载文件并播放。播放完成后或遇到异常,会随机播放下一首音频,并在播放前随机设置播放速度(0.9到1.2倍速)。代码包括ViewModel,负责音频管理和播放逻辑,以及UI层,包含播放和停止按钮。
|
8月前
|
Java Kotlin
java调用kotlin代码编译报错“找不到符号”的问题
java调用kotlin代码编译报错“找不到符号”的问题
327 10
|
7月前
|
存储 API 开发工具
kotlin安卓开发,如何获取设备的唯一id, 有哪些开源库
在Kotlin的Android开发中,获取设备唯一ID的方法包括不稳定的ANDROID_ID、需要权限的IMEI、使用UUID与SharedPreference结合,以及考虑隐私的Firebase Installations ID和Advertising ID。由于隐私问题和Google Play政策,IMEI和ANDROID_ID不推荐作为长期唯一标识。推荐使用UUID(首次安装时生成并存储),或在涉及广告时使用Advertising ID(需用户同意),而Firebase Installations ID则提供了一种合规的设备标识选项。在选择方法时,必须遵守隐私指南和政策。
|
7月前
|
XML 存储 数据格式
Kotlin Fuel库:图像下载过程中的异常处理
Kotlin Fuel库:图像下载过程中的异常处理
|
7月前
|
存储 Android开发 Kotlin
Kotlin开发安卓app,在使用 MediaPlayer 播放 res/raw 中的音乐时遇到突然中断的问题,而 onErrorListener 没有接收到任何报错
在使用 Android MediaPlayer 播放 res/raw 中的音乐时遇到中断问题,可能的原因包括资源问题、媒体文件编码格式、生命周期管理和设备资源配置。要排查问题,检查音频文件是否正确包含,格式编码是否支持,MediaPlayer 是否正确管理及释放,以及设备是否有足够存储和配置。通过设置 onErrorListener 日志和确保在 onDestroy 中释放资源来调试。如果文件过大,考虑使用 AssetManager。遵循这些步骤可帮助诊断并解决播放中断的问题。
|
8月前
|
API 开发者 Kotlin
Kotlin 中如何使用 Fuel 库进行代理切换?
Kotlin 中如何使用 Fuel 库进行代理切换?
|
数据采集 JSON 安全
简明指南:使用Kotlin和Fuel库构建JD.com分析
Kotlin是一门基于JVM的静态类型编程语言,以其简洁、高效、安全、跨平台等特点而著称。这门语言不仅适用于Android开发,还可用于服务器端和Web应用程序的开发。Fuel库作为一款轻量级的Kotlin HTTP客户端,提供了一套简洁易用的DSL(领域特定语言),使得发送HTTP请求和处理响应变得异常便捷。除此之外,Fuel还支持协程、异步操作、JSON处理以及文件上传等多种功能,以满足各种网络编程需求。
简明指南:使用Kotlin和Fuel库构建JD.com分析
|
Android开发 Kotlin
【错误记录】Kotlin 编译报错 ( Type mismatch: inferred type is String? but String was expected )
【错误记录】Kotlin 编译报错 ( Type mismatch: inferred type is String? but String was expected )
3188 0
【错误记录】Kotlin 编译报错 ( Type mismatch: inferred type is String? but String was expected )
|
Kotlin
Kotlin中标准库函数(apply、let、run、with、also、takeIf、takeUnless)的使用详解
Kotlin中标准库函数(apply、let、run、with、also、takeIf、takeUnless)的使用详解
117 0
|
Android开发 Kotlin
【Kotlin 初学者】Android Studio 运行 main 函数报错解决
目录 Andorid Studio 运行 main 函数报错: Gradle构建问题 New Project问题 运行成功 IntelliJ IDEA 其他问题 kotlin-gradle-plugin Failed to find Build Tools revision 31.0.0 解决方案1:移除buildToolsVersion版本 解决方案2:降低buildToolsVersion
547 0
【Kotlin 初学者】Android Studio 运行 main 函数报错解决