com.google.zxing.qrcode.detector: -> java.lang.NoSuchMethodError: 不在棉花糖上扫描



Android Studio 3.6

安卓6.0

app/build.gradle:

android {
//viewBinding.enabled = true
dataBinding {
enabled = true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
minSdkVersion 23
targetSdkVersion 29
versionCode 2
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation('com.crashlytics.sdk.android:crashlytics:2.10.1@aar') { transitive = true; }
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0-rc01'
implementation 'com.google.android.material:material:1.2.0-alpha01'
implementation 'com.google.zxing:core:3.4.0'
implementation 'org.altbeacon:android-beacon-library:2.16.3'
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
implementation 'androidx.viewpager2:viewpager2:1.0.0-beta05'
implementation 'com.journeyapps:zxing-android-embedded:4.0.0'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.0'
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.0"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation "androidx.core:core-ktx:+"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

在我的活动

class QRScanActivity : RootActivity() {
private lateinit var dataBinding: QrScanActivityBinding
private val REQUEST_PERMISSION = "REQUEST_PERMISSION"
private val REQUEST_CODE_CAMERA = 1
private lateinit var beepManager: BeepManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
dataBinding =
DataBindingUtil.setContentView<QrScanActivityBinding>(this, R.layout.qr_scan_activity)
dataBinding.setHandler(this)
init()
}
private fun initLogic() {
dataBinding.decoratedBarcodeView.decodeContinuous(object : BarcodeCallback {
override fun barcodeResult(result: BarcodeResult?) {
beepManager.playBeepSoundAndVibrate();
finish();
}
override fun possibleResultPoints(resultPoints: MutableList<ResultPoint>?) {
}
})
}

在xml布局中:

<com.journeyapps.barcodescanner.DecoratedBarcodeView
android:id="@+id/decoratedBarcodeView"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="@dimen/default_margin"
app:layout_constraintBottom_toTopOf="@+id/qrButtonScan"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/toolBarContainer" />

Android 9.0上成功运行。不错。

但当我在Android 6.0上启动时我会收到错误:

10-28 16:28:35.145 D/com.myproject.ui.actviity.QRScanActivity( 2405): possibleResultPoints:
10-28 16:28:35.484 E/AndroidRuntime( 2405): FATAL EXCEPTION: DecoderThread
10-28 16:28:35.484 E/AndroidRuntime( 2405): Process: com.myproject.debug, PID: 2405
10-28 16:28:35.484 E/AndroidRuntime( 2405): java.lang.NoSuchMethodError: No interface method sort(Ljava/util/Comparator;)V in class Ljava/util/List; or its super classes (declaration of 'java.util.List' appears in /system/framework/core-libart.jar)
10-28 16:28:35.484 E/AndroidRuntime( 2405):     at com.google.zxing.qrcode.detector.FinderPatternFinder.selectBestPatterns(FinderPatternFinder.java:616)
10-28 16:28:35.484 E/AndroidRuntime( 2405):     at com.google.zxing.qrcode.detector.FinderPatternFinder.find(FinderPatternFinder.java:164)
10-28 16:28:35.484 E/AndroidRuntime( 2405):     at com.google.zxing.qrcode.detector.Detector.detect(Detector.java:81)
10-28 16:28:35.484 E/AndroidRuntime( 2405):     at com.google.zxing.qrcode.QRCodeReader.decode(QRCodeReader.java:77)
10-28 16:28:35.484 E/AndroidRuntime( 2405):     at com.google.zxing.MultiFormatReader.decodeInternal(MultiFormatReader.java:173)
10-28 16:28:35.484 E/AndroidRuntime( 2405):     at com.google.zxing.MultiFormatReader.decodeWithState(MultiFormatReader.java:87)
10-28 16:28:35.484 E/AndroidRuntime( 2405):     at com.journeyapps.barcodescanner.Decoder.decode(Decoder.java:75)
10-28 16:28:35.484 E/AndroidRuntime( 2405):     at com.journeyapps.barcodescanner.Decoder.decode(Decoder.java:49)
10-28 16:28:35.484 E/AndroidRuntime( 2405):     at com.journeyapps.barcodescanner.DecoderThread.decode(DecoderThread.java:146)
10-28 16:28:35.484 E/AndroidRuntime( 2405):     at com.journeyapps.barcodescanner.DecoderThread.access$000(DecoderThread.java:22)
10-28 16:28:35.484 E/AndroidRuntime( 2405):     at com.journeyapps.barcodescanner.DecoderThread$1.handleMessage(DecoderThread.java:38)
10-28 16:28:35.484 E/AndroidRuntime( 2405):     at android.os.Handler.dispatchMessage(Handler.java:98)
10-28 16:28:35.484 E/AndroidRuntime( 2405):     at android.os.Looper.loop(Looper.java:148)
10-28 16:28:35.484 E/AndroidRuntime( 2405):     at android.os.HandlerThread.run(HandlerThread.java:61)
10-28 16:28:35.486 W/ActivityManager(  780):   Force finishing activity com.myproject.debug/com.myproject.ui.actviity.QRScanActivity
10-28 16:28:35.486 E/CrashlyticsCore( 2405): Error occurred sending report com.crashlytics.android.core.SessionReport@451f81a
10-28 16:28:35.487 E/CrashlyticsCore( 2405): Error occurred sending report com.crashlytics.android.core.SessionReport@e9abf4b
10-28 16:28:35.488 E/CrashlyticsCore( 2405): Error occurred sending report com.crashlytics.android.core.SessionReport@d2e7d28
10-28 16:28:35.491 D/CameraPreview( 2405): pause()

https://github.com/zxing/zxing/issues/1170#issuecomment-494778246

这是一个艰难的决定。一方面,我无法发布Android应用程序再也没有了,所以它有点"被否决了"。核心库仍然可以在Android之外或在另一个Android应用程序中使用。该应用程序以API 24为目标,是的。项目中的应用程序无法针对API 24,因此把它留在一个不会的状态也是没有意义的在API上运行<24.另一个解决方案是将Android应用程序修改为依赖3.3.x核心库并将其保留在那里。

https://github.com/zxing/zxing/issues/1170#issuecomment-533527019

请阅读以上所有信息。您可以a(使用3.3.x,或b(目标API 24。

相关内容

最新更新