Android: Kullanımdan kaldırıldı, Ek Açıklama'ya dönüştürülemiyor


11

AndroidX'e geçiş tavşan deliği aşağı gitti ...

Geçişi neredeyse tamamladım, ancak bir hatayla karşılaştığımda geçmiş gibi görünmüyorum.

Zaten denedim Clean & RebuildveInvalidate Caches / Restart

Bir şey tanınmayan R.java dosyasına @Deprecated enjekte ediyor gibi görünüyor.

Uygulamanın build.gradledosyası uzun, ancak alakalı bölümler (alakalı ise daha fazla yayın gönderebilir):


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'

        ...
    }
}


Kotlin derleyicisinden bir dizi hata alıyorum

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

R.java olan bağlantılar

R.java file ekran görüntüsü

Projemde titleMarginshiçbir yerde kullanmadım. Bir arama yaptığımda, @Deprecateddeğerler yalnızca Android sdk ve içinde bulunan com.google.android.materialyapay nesnelerde gösterilir .gradle/caches/. Bu klasörü silmeyi denedim ve her derleme ile tekrar görünüyor.

Veri bağlama ile ilgili bir şey olduğunu düşünüyorum, ama günlerdir buradayım ve bir neden bulamıyorum.

Burada bulduğum belirli ek açıklama işlemci dosyasının kaynağı: ProcessDataBinding.java

Güncelleme 1

AndroidX'e Geçişin Gerçekliği hakkındaki bu harika makale, Android X'in jetleme aracının üretilen kodu işlemediğini açıklıyor . Birlikte konularla ilgilenen diğer ilgili SO mesajları gördük ButterKnife, Daggervb, ama biz bunlardan herhangi birini kullanarak değiliz. Birkaç veri bağlama ve derlenmiş kitaplık kullanıyoruz, ancak hangisinin kötü referansların kaynağı olduğundan emin değilim. Benim sorum şu oluşturulan kodun kaynağını nasıl bulabilir ve düzeltebilirim?

Güncelleme 2

Orijinal AndroidX öncesi projesine geri dönersek, bu hata aslında destek kitaplığını 28'e yükseltirken ortaya çıkar.

implementation "com.android.support:appcompat-v7:27.1.1"

için

implementation "com.android.support:appcompat-v7:28.0.0"

derleme hatasını tetikler.

Bir kırıntı izi sonra bu sorun izci rastladım: Databinding v2, ilişkili olabilecek başka bir ek açıklama işlemcisi başarısız olduğunda hatalar üretir , ancak yine de nasıl düzeltileceğinden emin değilim.


Android gradle eklentisinin hangi sürümünü kullanıyorsunuz?
isaaaaame

DeprecatedR.java için bir ithalat beyanı var mı ?
clownba0t

@isaaaaame Gradle eklentisi 3.5.2, Gradle Sürüm 5.6.3
Evelyn

Yanıtlar:


0

Bunu değiştir:

compileOptions {
    dataBinding {
        enabled = true
    }
}

Bunun içine:

dataBinding {
    enabled = true
}
compileOptions {

}

Ve com.nextfaze.poweradaptersJetifier’ı şu durumlarda etkinleştirmeniz gerekir gradle.properties:

android.useAndroidX=true
android.enableJetifier=true

Değişiklik yaptım. Ve Jetifier etkinleştirildi. Yine de aynı hata.
Evelyn

Güncelleme 2'yi okursanız, AndroidX'in neden olmadığını göreceksiniz.
Evelyn

0

Çözüm :

build.gradle içerir

dataBinding {
        enabled true
    }

gradle.properties içerir

android.useAndroidX=true
android.enableJetifier=true
android.databinding.enableV2=true

Sorunla saatlerce mücadele ediyorum ve daha sonra şu şekilde çözdüm:

Geçici olarak projenizde DataBindingComponent için boş bir arabirim bildirin.

package androidx.databinding;

public interface DataBindingComponent {
}

Derlemesine izin verin ve hata gidecek. Ama şimdi asıl kök hatası ortaya çıkacak. Aslında tüm soruna neden olan ama bir şekilde yutulan. Benim durumumda, yanlış kullandığımı gösteren AutoValue'dan geliyordu

error: Parameter type java.lang.Boolean of setter method should be boolean to match getter

bunu düzeltmek ve sonra kukla arayüzü kaldırmak derleyiciyi tekrar mutlu eder.


İyi fikir, ama yine de benim için hatayı gösteriyor 😭
Evelyn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.