Gnanesh023
Gnanesh023

Reputation: 250

java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/camera/core/impl/utils/AspectRatioUtil$CompareAspectRatiosByDistanceToTargetRatio;

I'm making a QrCode Scanner app.

Whenever I open my app it crashes and gives NoClassDefFoundError

I checked the logcat and found this:-

2023-01-02 08:53:29.552 27370-27370/com.cheesypc.qrcodescanner E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.cheesypc.qrcodescanner, PID: 27370
java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/camera/core/impl/utils/AspectRatioUtil$CompareAspectRatiosByDistanceToTargetRatio;
    at androidx.camera.camera2.internal.SupportedSurfaceCombination.getSupportedOutputSizes(SupportedSurfaceCombination.java:468)
    at androidx.camera.camera2.internal.SupportedSurfaceCombination.getSuggestedResolutions(SupportedSurfaceCombination.java:240)
    at androidx.camera.camera2.internal.Camera2DeviceSurfaceManager.getSuggestedResolutions(Camera2DeviceSurfaceManager.java:197)
    at androidx.camera.core.internal.CameraUseCaseAdapter.calculateSuggestedResolutions(CameraUseCaseAdapter.java:431)
    at androidx.camera.core.internal.CameraUseCaseAdapter.addUseCases(CameraUseCaseAdapter.java:239)
    at androidx.camera.lifecycle.LifecycleCamera.bind(LifecycleCamera.java:206)
    at androidx.camera.lifecycle.LifecycleCameraRepository.bindToLifecycleCamera(LifecycleCameraRepository.java:283)
    at androidx.camera.lifecycle.ProcessCameraProvider.bindToLifecycle(ProcessCameraProvider.java:538)
    at androidx.camera.lifecycle.ProcessCameraProvider.bindToLifecycle(ProcessCameraProvider.java:363)
    at com.cheesypc.qrcodescanner.HomeScreenKt$Scanner$1$2.invoke(HomeScreen.kt:79)
    at com.cheesypc.qrcodescanner.HomeScreenKt$Scanner$1$2.invoke(HomeScreen.kt:60)
    at androidx.compose.ui.viewinterop.ViewFactoryHolder.setFactory(AndroidView.android.kt:174)
    at androidx.compose.ui.viewinterop.AndroidView_androidKt$AndroidView$1.invoke(AndroidView.android.kt:116)
    at androidx.compose.ui.viewinterop.AndroidView_androidKt$AndroidView$1.invoke(AndroidView.android.kt:113)
    at androidx.compose.ui.viewinterop.AndroidView_androidKt$AndroidView$$inlined$ComposeNode$1.invoke(Composables.kt:254)
    at androidx.compose.runtime.ComposerImpl$createNode$2.invoke(Composer.kt:1537)
    at androidx.compose.runtime.ComposerImpl$createNode$2.invoke(Composer.kt:1535)
    at androidx.compose.runtime.ComposerImpl$recordInsert$2.invoke(Composer.kt:3395)
    at androidx.compose.runtime.ComposerImpl$recordInsert$2.invoke(Composer.kt:3392)
    at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:782)
    at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:813)
    at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:827)
    at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:519)
    at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:140)
    at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:131)
    at androidx.compose.ui.platform.AndroidComposeView.setOnViewTreeOwnersAvailable(AndroidComposeView.android.kt:1015)
    at androidx.compose.ui.platform.WrappedComposition.setContent(Wrapper.android.kt:131)
    at androidx.compose.ui.platform.WrappedComposition.onStateChanged(Wrapper.android.kt:182)
    at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:360)
    at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.java:202)
    at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:138)
    at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:131)
    at androidx.compose.ui.platform.AndroidComposeView.onAttachedToWindow(AndroidComposeView.android.kt:1102)
    at android.view.View.dispatchAttachedToWindow(View.java:18359)
    at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3397)
    at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3404)
    at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3404)
    at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3404)
    at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3404)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1773)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1471)

2023-01-02 08:53:29.556 27370-27370/com.cheesypc.qrcodescanner E/AndroidRuntime: at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7211) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1004) at android.view.Choreographer.doCallbacks(Choreographer.java:816) at android.view.Choreographer.doFrame(Choreographer.java:751) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:990) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6692) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.camera.core.impl.utils.AspectRatioUtil$CompareAspectRatiosByDistanceToTargetRatio" on path: DexPathList[[zip file "/data/app/com.cheesypc.qrcodescanner-Bpfcr28b32Uq7ZGMUq2TGQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.cheesypc.qrcodescanner-Bpfcr28b32Uq7ZGMUq2TGQ==/lib/arm64, /data/app/com.cheesypc.qrcodescanner-Bpfcr28b32Uq7ZGMUq2TGQ==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) ... 53 more

and the error showing on AndroidView() and try{ cameraProviderFuture.get().bindToLifecycle}

AndroidView(
            factory = { context ->
                val previewView = PreviewView(context)
                val preview = Preview.Builder().build()
                val selector = CameraSelector.Builder()
                    .requireLensFacing(CameraSelector.LENS_FACING_BACK)
                    .build()
                preview.setSurfaceProvider(previewView.surfaceProvider)
                val imageAnalysis = ImageAnalysis.Builder()
                    .setTargetResolution(Size(previewView.width, previewView.height))
                    .setBackpressureStrategy(STRATEGY_KEEP_ONLY_LATEST)
                    .build()
                imageAnalysis.setAnalyzer(
                    ContextCompat.getMainExecutor(context),
                    QrCodeAnalyser { result ->
                        code = result
                    }
                )
                try {
                    cameraProviderFuture.get().bindToLifecycle(
                        lifecycleOwner,
                        selector,
                        preview,
                        imageAnalysis
                    )
                } catch (e: Exception) {
                    e.printStackTrace()
                }
                previewView

            }, modifier = Modifier.weight(1f)
        )

Upvotes: 4

Views: 1255

Answers (2)

I have had the same issue, you must take into account that all the libraries are in the same stable version, the last one that the documentation indicates is 1.2.0, as you can see in the following image:

camerax versions

So in the gradle you should define the dependencies as follows:

implementation("androidx.camera:camera-camera2:1.2.0")
implementation("androidx.camera:camera-extensions:1.2.0")
implementation("androidx.camera:camera-lifecycle:1.2.0")
implementation("androidx.camera:camera-view:1.2.0")

Upvotes: 0

Joko Supriyanto
Joko Supriyanto

Reputation: 29

I also get that error when using this dependency

implementation "androidx.camera:camera-camera2:1.2.0"
implementation "androidx.camera:camera-extensions:1.2.0"
implementation "androidx.camera:camera-lifecycle:1.2.0"
implementation "androidx.camera:camera-view:1.3.0-alpha02"

it turns out I have to equate all versions, to 1.2.0. After that everything worked

Upvotes: 2

Related Questions