java.lang.BootstrapMethodError: исключение из метода начальной загрузки сайта № 2 на CameraX (1.0.0-alpha06)

Я пытаюсь использовать CameraX API для получения фотографий, но после обновления до новой версии API 1.0.0-alpha06 он начал вылетать.

CameraX.bindToLifecycle(...)

метод.

Журнал ошибок:

Process: com.aximetria.aximetria.debug, PID: 2629
    java.lang.BootstrapMethodError: Exception from call site #2 bootstrap method
        at androidx.camera.core.Preview.updateListener(Preview.java:368)
        at androidx.camera.core.Preview.updateOutput(Preview.java:586)
        at androidx.camera.core.Preview.updateConfigAndOutput(Preview.java:363)
        at androidx.camera.core.Preview.onSuggestedResolutionUpdated(Preview.java:524)
        at androidx.camera.core.UseCase.updateSuggestedResolution(UseCase.java:408)
        at androidx.camera.core.CameraX.calculateSuggestedResolutions(CameraX.java:684)
        at androidx.camera.core.CameraX.bindToLifecycle(CameraX.java:195)
        at com.aximetria.aximetria.ui.main.profile.avatar.TakeAvatarPhotoFragment.initCamera(TakeAvatarPhotoFragment.kt:169)
        at com.aximetria.aximetria.ui.main.profile.avatar.TakeAvatarPhotoFragment.initCamera$default(TakeAvatarPhotoFragment.kt:117)
        at com.aximetria.aximetria.ui.main.profile.avatar.TakeAvatarPhotoFragment$onViewCreated$1.onPermissionsChecked(TakeAvatarPhotoFragment.kt:55)
    ...

Мой код:

    private fun initCamera(reverseFacing: Boolean = false) {
        ...

        val previewConfig = PreviewConfig.Builder()
                .setTargetAspectRatio(AspectRatio.RATIO_4_3)
                .setLensFacing(lensFacing)
                .build()

        val preview = Preview(previewConfig)
        preview.setOnPreviewOutputUpdateListener { previewOutput ->
            val parent = binding.preview.parent as ViewGroup
            parent.removeView(binding.preview)
            parent.addView(binding.preview, 0)
            binding.preview.surfaceTexture = previewOutput.surfaceTexture
        }

        val captureConfig = ImageCaptureConfig.Builder()
                .setFlashMode(flashMode)
                .setLensFacing(lensFacing)
                .build()

        val capture = ImageCapture(captureConfig)

        binding.takeAPhoto.setOnClickListener {
            ...
            val imageFile = createTempFile(System.currentTimeMillis().toString(), ".jpg")
            capture.takePicture(imageFile, this, object : ImageCapture.OnImageSavedListener {
                override fun onImageSaved(file: File) {
                    ...
                }

                override fun onError(imageCaptureError: ImageCapture.ImageCaptureError, message: String, cause: Throwable?) {
                    ...
                }
            })
        }

        CameraX.bindToLifecycle(this, capture, preview)
    }

Кто-нибудь знает, что вызвало этот сбой? Я не вижу связанной информации в документации (которая к настоящему времени устарела для CameraX)


person Peter Staranchuk    schedule 21.10.2019    source источник
comment
если версия все еще находится в альфа-версии, это может быть ошибка библиотеки?   -  person a_local_nobody    schedule 21.10.2019
comment
@a_local_nobody кажется правильным, у меня такая же ошибка с версией библиотеки alpha06, но возвращение к alpha05 исправляет ее.   -  person Stéphane Péchard    schedule 22.10.2019
comment
У меня такая же проблема .. так что откатываюсь на альфа05   -  person yoonhok    schedule 29.10.2019


Ответы (4)


Добавьте это в градиент.

CameraX нуждается в некоторых методах, которые являются частью Java 8, поэтому нам нужно соответствующим образом настроить параметры компиляции. В конце блока android сразу после buildTypes добавьте следующее:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
person Martynas B    schedule 29.10.2019
comment
У меня работает так: compileOptions {sourceCompatibility = 1.8 targetCompatibility = 1.8} - person Tomas; 13.12.2019

Я исправил эту проблему, добавив Java8 в приложение build.gradle.

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
    jvmTarget = "1.8"
}
person rajahsekar    schedule 27.11.2019

Добавьте следующие строки в файл build.gradle (: app):

android{

  compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }    
}
person MEGHA DOBARIYA    schedule 04.05.2020

Как @ a-local-nobody, @ stéphane-péchard и @yoonhok справедливо отметили ошибку в альфа-6 версии библиотеки. Откат на альфа-05 в моем случае также устранил сбои.

person Peter Staranchuk    schedule 29.10.2019
comment
Я попытался откатиться на альфа-05, но альфа-06 не удаляется и все еще появляется, может быть, вы знаете, почему? - person Martynas B; 29.10.2019
comment
что вы имеете в виду под просрочкой? - person Peter Staranchuk; 29.10.2019
comment
Я имею в виду, что это все еще альфа-06 в коде, хотя я изменил зависимость в gradle - person Martynas B; 29.10.2019
comment
попробуйте очистить проект и файл- ›сделать недействительными кеши / перезапустить - person Peter Staranchuk; 29.10.2019
comment
кроме того, проверьте, что обе библиотеки находятся в версии 5. Я использую: реализацию androidx.camera:camera-core:1.0.0-alpha05 реализацию androidx.camera:camera-camera2:1.0.0-alpha05 - person Peter Staranchuk; 29.10.2019
comment
По-прежнему то же самое после аннулирования кешей / перезапуска, похоже, что альфа 06 принудительно загружена - person Martynas B; 29.10.2019
comment
Вы можете проверить решение, которое я опубликовал ниже, оно сработало для меня. Не нужно было переходить на более раннюю версию - person Martynas B; 29.10.2019
comment
У меня была аналогичная ошибка, которая произошла после того, как я добавил модификацию зависимости, когда я использовал Picasso. - person landrykapela; 15.02.2020