現象
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' } }
コメント