Android java.lang.BootstrapMethodError:CameraX(1.0.0-alpha06)上调用站点#2引导方法的异常
我试图使用CameraX API获取照片,但在我更新到新的API版本1.0.0-alpha06后,它开始在上崩溃Android java.lang.BootstrapMethodError:CameraX(1.0.0-alpha06)上调用站点#2引导方法的异常,android,crash,android-camerax,Android,Crash,Android Camerax,我试图使用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.ca
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来说,现在已经过时了)因为@a-local-nobody、@stéphane-péchard和@yoonhok正确地指出了alpha-6版本库中的错误。回滚到alpha-05也删除了我的案例中的崩溃。将此添加到gradle中 CameraX需要一些属于Java8的方法,因此我们需要相应地设置编译选项。在android块的末尾,buildTypes之后添加以下内容:
我已经通过将Java8添加到app build.gradle中解决了这个问题
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
将以下行添加到build.gradle(:app)文件中:
如果版本仍然在alpha中,可能只是库中的一个bug?@a_local_似乎没有人是对的,我的alpha06版本库中有相同的bug,但是回到alpha05修复了它。我也有相同的问题。。所以我回滚到alpha05我尝试回滚到alpha-05但是alpha-06没有被删除并且仍然出现,也许你知道为什么吗?你说的欠费是什么意思?我的意思是代码中仍然是alpha-06,尽管我更改了gradletry中的依赖项,以执行project clean和file->invalidate caches/Restart5,并且检查这两个库在版本5中都是什么。我使用:实现“androidx.camera:camera core:1.0.0-alpha05”实现“androidx.camera:camera-camera2:1.0.0-alpha05”对我来说是这样的:编译选项{sourceCompatibility=1.8 targetCompatibility=1.8}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
android{
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}