質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

2回答

3771閲覧

Android Studio 3にてcheckDebugDuplicateClassesエラーが出る

PossiblyApple

総合スコア17

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2019/05/01 01:42

編集2019/05/09 12:46

概要

Android Studio 3にて、Jarファイルを読み込むとcheckDebugDuplicateCalssesエラーが出る。出ないようにしたい。
どうやらKotlinのモジュール等が、Android Studio3本体とそのjarファイルで重複しているらしいが、解決法がわからない。
どなたかご教授をお願いします。

環境

Android Studio 3.4
エミュレータ: Nexus 5X API 27
Visual Studio Code 1.25.1
Java jre 1.8.0_211
Java jdk 1.8.0_112 (1.12をダウンロードしたが使われていない)
Kotlin 1.3.30-release-170

コード

Empty Activity を作成、プロジェクト名"errortest"にて、C:\Users\(ユーザ名)\Documents\pros\and\test を所定フォルダとした。
言語はKotlin、対応デバイスはAndroid 5.0を選択。

① libsフォルダに、以下の内容をコンパイルした pack.jar という名前のファイルを保存した。(VSCを使用)

Kotlin

1package pack.age 2 3class c{ 4 fun f(x: Int) = x 5}

② app/bulid.gradle の最終行に、implementation files('libs/pack.jar')と入力し、syncさせた。
// 追加した箇所 という文章は、原コードには掲載されていないが、わかりやすくするために載せた)

gradle

1dependencies { 2 implementation fileTree(include: ['*.jar'], dir: 'libs') 3 implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 4 implementation 'com.android.support:appcompat-v7:28.0.0' 5 implementation 'com.android.support.constraint:constraint-layout:1.1.3' 6 testImplementation 'junit:junit:4.12' 7 androidTestImplementation 'com.android.support.test:runner:1.0.2' 8 androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' 9 implementation files('libs/pack.jar') // 追加した箇所 10}

③ MainActivity.kt の内容を以下の通りに変更した。

Kotlin

1package com.example.errortest 2 3import android.support.v7.app.AppCompatActivity 4import android.os.Bundle 5import pack.age.c // 追加した箇所 6 7class MainActivity : AppCompatActivity() { 8 9 override fun onCreate(savedInstanceState: Bundle?) { 10 super.onCreate(savedInstanceState) 11 setContentView(R.layout.activity_main) 12 13 val c_ins = c() // 追加した箇所 14 val y = c_ins.f(100) // 追加した箇所 15 } 16}

Empty Activityは、初期設定の場合"Hello World !"が出力されるようになっているため、
エラーが起こらなければ、それが出力されるはず。

エラーメッセージ

syncするだけだとエラーは出ないが、Runすると以下のエラーが出る。

Bulid Output内の、Run tasksの**:app:checkDebugDuplicateClasses**にてエラーが出ている。そのエラーは以下の通りである。

Error

1org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:checkDebugDuplicateClasses'. 2 at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:95) 3(略) 4Caused by: com.android.ide.common.workers.WorkerExecutorException: 1 exception was raised by workers: 5java.lang.RuntimeException: Duplicate class kotlin.ArrayIntrinsicsKt found in modules kotlin-stdlib-1.3.31.jar (org.jetbrains.kotlin:kotlin-stdlib:1.3.31) and pack.jar (pack.jar) 6Duplicate class kotlin.BuilderInference found in modules kotlin-stdlib-1.3.31.jar (org.jetbrains.kotlin:kotlin-stdlib:1.3.31) and pack.jar (pack.jar) 7(略) 8Go to the documentation to learn how to Fix dependency resolution errors. 9 at com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable.run(CheckDuplicateClassesDelegate.kt:132) 10(略)

2500行余りあり、Exclude等では対応できなさそうに見える。
全てのDuplicate classは **kotlin.***という形式だったため、それらをpack.jarから読み込まないようにすれば良さそうだが、方法がわからない。

また、:app:checkDebugDuplicateClassesの下段タブにも"Execute Action"というタブがある。そこのエラーは以下の通りである。

Error

1Cause 1: java.util.concurrent.ExecutionException: java.lang.RuntimeException: Duplicate class kotlin.ArrayIntrinsicsKt found in modules kotlin-stdlib-1.3.31.jar (org.jetbrains.kotlin:kotlin-stdlib:1.3.31) and pack.jar (pack.jar) 2Duplicate class kotlin.BuilderInference found in modules kotlin-stdlib-1.3.31.jar (org.jetbrains.kotlin:kotlin-stdlib:1.3.31) and pack.jar (pack.jar) 3(略) 4Go to the documentation to learn how to Fix dependency resolution errors. 5 at com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable.run(CheckDuplicateClassesDelegate.kt:132) 6(略)

追記(2019/5/9)

以下の方法でエラーが起こらず、動くようになりました。
しかしながら、これはLibsフォルダを使ったやり方ではないため、回答済にはしないでおきます。
Libsフォルダが用意されているのに使えないというのは変わらないので……。

① File → New → New module にて、Import .JAR/.AAR Package を選択し、ファイル名を入力してFinishする。
② File → Project Structure にて、appを押して、"Declared Dependencies" の左上の+ボタンを押して、3 Module Dependency を選択して、①で作ったモジュールを読み込む。

また、Android Studioのウィンドウを閉じて再度開くと、なぜかモジュールが読み込まれていないという問題が起こりましたが、これはProject Structureを開き、追加したモジュールを消して、Syncして再び開いてモジュールを追加することで解決しました(ウィンドウを開くたびにこれを行わなければなりません)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

追記の方法で動くことがわかり、やりたいことは実現できたので解決とします。

投稿2019/12/31 09:07

PossiblyApple

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

I also encountered the same problem, how to solve it

投稿2019/05/07 06:20

wufan

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

PossiblyApple

2019/05/09 12:56 編集

Hi. I additionally wrote the solution. It's not the method to use libs folder, but it wil work. I hope your code get successful.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問