[Kotlin]More than one file was found with OS independent path ‘META-INF/ktor-http.kotlin_module’

スポンサーリンク

現象

Kotlin Nativeで、KtorのHTTPクライアント のライブラリ「io.ktor:ktor-client-okhttp」などを追加してアプリをビルドした時に以下のエラーが発生しました。

More than one file was found with OS independent path 'META-INF/ktor-http.kotlin_module'

「OSに依存しないパス’META-INF/〜〜〜’を持つファイルが複数見つかりました。」という意味です。

構成

Kotlin Nativeでライブラリ形式のプロジェクトを作成し、Androidアプリ側のGradleで、Kotlin Nativeのプロジェクトを追加する構成。

状況概要

  • GradleのpackagingOptionsで除外してあげればよさげ
  • GradleのSyncを行なっただけでは、エラーは発生しない
  • kotlin nativeのプロジェクトを別に切っている場合、kotlin native側のビルドでは発生しない
  • 似たようなファイル名で複数依存している場合があるので、よく見ること(追加したのにエラーが消えていないように思い込んでしまい、はまっていました)

対策例

以下を修正(Androidアプリ側のGradleファイル)

app/build.gradle

android {
    compileSdkVersion build_versions.target_sdk
〜〜〜省略〜〜〜
    packagingOptions {
        exclude 'META-INF/ktor-http.kotlin_module'
        exclude 'META-INF/kotlinx-io.kotlin_module'
        exclude 'META-INF/atomicfu.kotlin_module'
        exclude 'META-INF/ktor-utils.kotlin_module'
        exclude 'META-INF/kotlinx-coroutines-io.kotlin_module'
        exclude 'META-INF/ktor-client-core.kotlin_module'
    }
}

コメント

タイトルとURLをコピーしました