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'
    }
}