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 でも同様です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/21 16:54