繁体   English   中英

java.lang.NoClassDefFoundError:解析失败:Landroidx/camera/core/impl/utils/AspectRatioUtil$CompareAspectRatiosByDistanceToTargetRatio;

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

我正在制作 QrCode 扫描仪应用程序。

每当我打开我的应用程序时,它就会崩溃并给出 NoClassDefFoundError

我检查了 logcat,发现了这个:-

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 文件“/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

以及AndroidView()上显示的错误并尝试{ 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)
        )

使用此依赖项时我也会收到该错误

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"

事实证明我必须将所有版本等同于 1.2.0。 之后一切正常

我遇到了同样的问题,您必须考虑到所有库都在同一个稳定版本中,文档指示的最后一个是 1.2.0,如下图所示:

相机版本

所以在 gradle 你应该定义依赖如下:

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")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM