Đi xuống lỗ thỏ di chuyển sang AndroidX ...
Tôi đã gần hoàn thành việc di chuyển, nhưng gặp phải một lỗi mà tôi dường như không thể vượt qua.
Đã thử Clean & Rebuild
vàInvalidate Caches / Restart
Có vẻ như một cái gì đó đang tiêm @Deprecated vào tệp R.java không được nhận dạng.
Tệp của ứng dụng build.gradle
dài nhưng đây là các phần có liên quan (có thể đăng thêm nếu có liên quan):
android {
compileSdkVersion 29
defaultConfig {
minSdkVersion 17
targetSdkVersion 29
}
compileOptions {
dataBinding {
enabled = true
}
}
dependencies {
...
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.android.material:material:1.2.0-alpha01'
def rxlifecycleVersion = "3.1.0"
implementation "io.reactivex.rxjava3:rxjava:3.0.0-RC4"
implementation "com.trello.rxlifecycle3:rxlifecycle:$rxlifecycleVersion"
implementation "com.trello.rxlifecycle3:rxlifecycle-kotlin:$rxlifecycleVersion"
implementation "com.trello.rxlifecycle3:rxlifecycle-android:$rxlifecycleVersion"
implementation "com.trello.rxlifecycle3:rxlifecycle-components:$rxlifecycleVersion"
implementation(name: 'SectionCursorAdapter-3.0.0', ext: 'aar')
implementation 'com.nextfaze.poweradapters:power-adapters:0.24.1'
implementation 'com.nextfaze.poweradapters:power-adapters-data:0.24.1'
implementation 'com.nextfaze.poweradapters:power-adapters-recyclerview-v7:0.24.1'
implementation 'com.nextfaze.poweradapters:power-adapters-support-v4:0.24.1'
...
}
}
Tôi nhận được một loạt lỗi từ trình biên dịch Kotlin
e: /.../R.java:6187: error: incompatible types: Deprecated cannot be converted to Annotation
@Deprecated
^
e: /.../R.java:28468: error: incompatible types: Deprecated cannot be converted to Annotation
@Deprecated
^
e: /.../R.java:28882: error: incompatible types: Deprecated cannot be converted to Annotation
@Deprecated
^
e: java.lang.IllegalStateException: failed to analyze: java.lang.NullPointerException
at org.jetbrains.kotlin.analyzer.AnalysisResult.throwIfError(AnalysisResult.kt:56)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:182)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:164)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:54)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:84)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:42)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:104)
at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1558)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)
at sun.rmi.transport.Transport$1.run(Transport.java:200)
at sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at android.databinding.annotationprocessor.ProcessDataBinding.getSupportedOptions(ProcessDataBinding.java:219)
at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor.getSupportedOptions(incrementalProcessors.kt)
at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor.createDependencyCollector(incrementalProcessors.kt:44)
at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor.access$createDependencyCollector(incrementalProcessors.kt:22)
at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor$dependencyCollector$1.invoke(incrementalProcessors.kt:24)
at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor$dependencyCollector$1.invoke(incrementalProcessors.kt:22)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor.getRuntimeType(incrementalProcessors.kt:69)
at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalAptCache.updateCache(IncrementalAptCache.kt:26)
at org.jetbrains.kotlin.kapt3.base.incremental.JavaClassCacheManager.updateCache(cache.kt:22)
at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing(annotationProcessing.kt:87)
at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing$default(annotationProcessing.kt:35)
at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.runAnnotationProcessing(Kapt3Extension.kt:230)
at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.analysisCompleted(Kapt3Extension.kt:188)
at org.jetbrains.kotlin.kapt3.ClasspathBasedKapt3Extension.analysisCompleted(Kapt3Extension.kt:99)
at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM$analyzeFilesWithJavaIntegration$2.invoke(TopDownAnalyzerFacadeForJVM.kt:96)
at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(TopDownAnalyzerFacadeForJVM.kt:106)
at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration$default(TopDownAnalyzerFacadeForJVM.kt:81)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:555)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:82)
at org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.kt:107)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyze(KotlinToJVMBytecodeCompiler.kt:546)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:177)
... 23 more
liên kết đến R.java
Tôi đã không sử dụng titleMargins
bất cứ nơi nào trong dự án của tôi. Khi tôi thực hiện tìm kiếm, các @Deprecated
giá trị chỉ hiển thị trong sdk và com.google.android.material
các tạo phẩm của Android , có trong .gradle/caches/
. Tôi đã thử xóa thư mục này và nó xuất hiện lại với mỗi lần biên dịch.
Tôi nghĩ rằng nó có liên quan đến cơ sở dữ liệu, nhưng tôi đã ở đó nhiều ngày và không thể tìm ra nguyên nhân.
Nguồn cho tệp bộ xử lý chú thích cụ thể mà tôi tìm thấy ở đây: ProcessDataBinding.java
Cập nhật 1
Bài viết tuyệt vời này về Thực tế di chuyển sang AndroidX giải thích rằng công cụ phản lực của Android X không xử lý mã được tạo . Tôi đã thấy bài viết SO liên quan khác đối phó với các vấn đề với ButterKnife
, Dagger
, vv, nhưng chúng tôi không sử dụng bất kỳ trong số này. Chúng tôi đang sử dụng một số thư viện dữ liệu và biên dịch, nhưng tôi không chắc cái nào là nguồn gốc của các tài liệu tham khảo xấu. Vì vậy, câu hỏi của tôi là làm thế nào để tôi tìm được nguồn của mã được tạo này và sửa nó?
Cập nhật 2
Quay trở lại dự án tiền AndroidX ban đầu, lỗi này thực sự xảy ra khi nâng cấp thư viện hỗ trợ lên 28. Chỉ cần thay đổi dòng
implementation "com.android.support:appcompat-v7:27.1.1"
đến
implementation "com.android.support:appcompat-v7:28.0.0"
sẽ kích hoạt lỗi biên dịch.
Lần theo dấu vết vụn vỡ, tôi đã bắt gặp trình theo dõi vấn đề này: Databinding v2 tạo ra lỗi khi một bộ xử lý chú thích khác có thể liên quan nhưng tôi vẫn không biết cách khắc phục.
Deprecated
trong R.java?