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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

546閲覧

Android Studio で Multiple dex files define の解決方法

haseg

総合スコア7

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2018/03/21 07:06

Android Studio で Multiple dex files define の解決方法

Android にて QR-Code Decodeのアプリを作成しています。
github ZXing ("Zebra Crossing") barcode scanning library for Java, Android の組み込みを行うと以下のエラーメッセージが表示されます。

組み込み方法は、インターネットを参考に直接 com 以下に展開、build.gradle に必要な情報を記載しました。

本エラーコードの解決方法と、実際に重複を起こしているファイルの所在を教えて下さい。
DexMerger.java など

発生している問題・エラーメッセージ

Information:Gradle tasks [:app:assembleDebug] Error:Error converting bytecode to dex: Cause: com.android.dex.DexException: Multiple dex files define Lcom/google/zxing/BarcodeFormat; Error:com.android.dex.DexException: Multiple dex files define Lcom/google/zxing/BarcodeFormat; Error: at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661) Error: at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616) Error: at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598) Error: at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171) Error: at com.android.dx.merge.DexMerger.merge(DexMerger.java:198) Error: at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61) Error: at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36) Error: at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424) Error: at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) Error: at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) Error: at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) Error: at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) Error:Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'.

組み込み方法

build.gradle に以下の 1行追加

dependencies { compile 'com.google.zxing:core:3.2.1' }

該当のソースコード

java

1package com.xxx.camera; 2 3import java.io.IOException; 4import java.util.List; 5 6import android.app.Activity; 7import android.hardware.Camera; 8import android.hardware.Camera.AutoFocusCallback; 9import android.hardware.Camera.CameraInfo; 10import android.hardware.Camera.PreviewCallback; 11import android.hardware.Camera.Size; 12import android.view.Surface; 13import android.view.SurfaceHolder; 14import android.view.SurfaceView; 15import android.view.View; 16import android.view.View.OnClickListener; 17import android.widget.RelativeLayout; 18import android.widget.TextView; 19 20import com.google.zxing.BinaryBitmap; 21import com.google.zxing.MultiFormatReader; 22import com.google.zxing.PlanarYUVLuminanceSource; 23import com.google.zxing.Reader; 24import com.google.zxing.Result; 25import com.google.zxing.common.HybridBinarizer; 26 27public class SurfaceViewCallback implements SurfaceHolder.Callback { 28 29 private Camera mCamera = null; 30 private RelativeLayout mRelativeLayout; 31 private SurfaceView mSurfaceView; 32 private TextView mTextView; 33 private Activity mActivity; 34 35 public SurfaceViewCallback(Activity activity, SurfaceView surfaceView) { 36 super(); 37 mActivity = activity; 38 mSurfaceView = surfaceView; 39 mCamera = Camera.open(); 40 } 41 42 public void destroy() { 43 if (mCamera != null) { 44 mCamera.stopPreview(); 45 mCamera.release(); 46 mCamera = null; 47 } 48 } 49 50 @Override 51 public void surfaceDestroyed(SurfaceHolder holder) { 52 if (mCamera != null) { 53 mCamera.stopPreview(); 54 mCamera.release(); 55 mCamera = null; 56 } 57 } 58 59 @Override 60 public void surfaceCreated(SurfaceHolder holder) { 61 mTextView = (TextView) (mActivity.findViewById(R.id.result_textview)); 62 mRelativeLayout = (RelativeLayout) (mActivity.findViewById(R.id.relative_layout)); 63 64 try { 65 mCamera.setPreviewDisplay(holder); 66 } catch (IOException e) { 67 mCamera.release(); 68 mCamera = null; 69 e.printStackTrace(); 70 } 71 } 72 73 @Override 74 public void surfaceChanged(SurfaceHolder holder, int format, int width, 75 int height) { 76 if (mCamera != null) { 77 mCamera.startPreview(); 78 } 79 } 80 81// カメラ部の機能は割愛 82 83 Camera.PreviewCallback mPreviewCallback = new PreviewCallback() { 84 85 @Override 86 public void onPreviewFrame(byte[] data, Camera camera) { 87 TextView mTextView = (TextView) mActivity 88 .findViewById(R.id.result_textview); 89 int previewWidth = camera.getParameters().getPreviewSize().width; 90 int previewHeight = camera.getParameters().getPreviewSize().height; 91 92 PlanarYUVLuminanceSource source = new PlanarYUVLuminanceSource( 93 data, previewWidth, previewHeight, 0, 0, previewWidth, 94 previewHeight, false); 95 BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); 96 97 Reader reader = new MultiFormatReader(); 98 Result result = null; 99 try { 100 result = reader.decode(bitmap); 101 String text = result.getText(); 102 mTextView.setText(text); 103 } catch (Exception e) { 104 mTextView.setText("reading..."); 105 } 106 } 107 }; 108}

補足情報(FW/ツールのバージョンなど)

Android Studio:Ver.3.01
Android SDK:Ver.4.4 KitKat
Android SDK:Ver.5.1 Lollipop でも同様です。

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

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

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

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

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

guest

回答1

0

ベストアンサー

build.gradleのdependenciesに記述追加するだけではなく、ソースファイルもダウンロードして自プロジェクト内に展開したということなのでしょうか?ライブラリーの機能を利用するにはdependenciesへの記述のみで良いはずです。ライブラリーのソースファイルまでも組み込んだことが逆効果になって「重複」が生じているものと思います。

投稿2018/03/21 11:13

keicha_hrs

総合スコア6768

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

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

haseg

2018/03/21 16:54

適切なアドバイス、ありがとうございます。 コードの組み込みを取りやめることでエラー回避できました。 これからもよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問