অ্যান্ড্রয়েড: অবহেলিতকে টিকাতে রূপান্তর করা যাবে না


11

অ্যান্ড্রয়েডএক্সে স্থানান্তরিত করার খরগোশের ছিদ্রটি নেমে গেছে ...

আমি মাইগ্রেশন প্রায় শেষ করেছি, কিন্তু একটি ত্রুটির মধ্যে দৌড়ে গিয়ে আমি অতীত হয়ে উঠতে পারি না বলে মনে হয়।

ইতিমধ্যে চেষ্টা করা হয়েছে Clean & RebuildএবংInvalidate Caches / Restart

দেখে মনে হচ্ছে কিছু R.java ফাইলটিতে @ অনুগ্রহ করে ইনজেকশন দিচ্ছে যা স্বীকৃত নয়।

অ্যাপ্লিকেশনটির build.gradleফাইলটি দীর্ঘ তবে এখানে প্রাসঙ্গিক অংশগুলি (প্রাসঙ্গিক হলে আরও পোস্ট করতে পারে):


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'

        ...
    }
}


আমি কোটলিন সংকলক থেকে ত্রুটিগুলির একটি সিরিজ পেয়েছি

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

যা আর। জাভা লিঙ্ক

আর জাভা ফাইলের স্ক্রিনশট

আমি titleMarginsআমার প্রকল্পের কোথাও ব্যবহার করি নি । যখন আমি একটি অনুসন্ধান করি, @Deprecatedমানগুলি কেবলমাত্র com.google.android.materialঅন্তর্ভুক্ত থাকা অ্যান্ড্রয়েড এসডিকে এবং শিল্পকলাগুলিতে প্রদর্শিত হয় .gradle/caches/। আমি এই ফোল্ডারটি মোছার চেষ্টা করেছি এবং এটি প্রতিটি সংকলনের সাথে আবার প্রদর্শিত হবে।

আমি মনে করি এটি ডেটাবাইন্ডিংয়ের সাথে কিছু করার আছে তবে আমি বেশ কয়েকদিন ধরে এটি করেছি এবং কারণ খুঁজে পেতে অক্ষম।

সেই নির্দিষ্ট টিকা প্রসেসরের ফাইলের উত্স আমি এখানে পেয়েছি: প্রসেসডাটাবাইন্ডিং। জাভা

আপডেট 1

রিয়েলটিটির অফ অ্যান্ড্রয়েডএক্সে স্থানান্তরের এই দুর্দান্ত নিবন্ধটি ব্যাখ্যা করেছে যে অ্যান্ড্রয়েড এক্স এর জেটিফায়ার সরঞ্জামটি উত্পন্ন কোড পরিচালনা করে না । আমি অন্য সংশ্লিষ্ট তাই সমস্যা সঙ্গে তার আচরণ পোস্ট দেখেছি ButterKnife, Daggerইত্যাদি, কিন্তু আমরা এর মধ্যে যে কোনো ব্যবহার করছেন না। আমরা বেশ কয়েকটি ডেটাবাইন্ডিং এবং সংকলিত গ্রন্থাগার ব্যবহার করছি, তবে আমি নিশ্চিত নই যে কোনটি খারাপ রেফারেন্সের উত্স is সুতরাং আমার প্রশ্নটি হল আমি কীভাবে এই উত্পন্ন কোডের উত্স খুঁজে পেতে এবং এটি ঠিক করব?

আপডেট 2

মূল প্রাক-অ্যান্ড্রয়েডএক্স প্রকল্পে ফিরে যাওয়া, এই ত্রুটিটিটি সমর্থন লাইব্রেরিটি 28-তে উন্নীত করার সময় ঘটে Just

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

প্রতি

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

সংকলন ত্রুটি ট্রিগার করবে।

ক্রমবস অনুসরণ করার পরে আমি এই ইস্যুটির ট্র্যাকারটি দেখতে পেলাম : ডেটাবাইন্ডিং ভি 2 ত্রুটি তৈরি করে যখন অন্য একটি টীকা প্রসেসর সম্পর্কিত হতে পারে যা সম্পর্কিত হতে পারে তবে আমি কীভাবে এটি ঠিক করব তা এখনও নিশ্চিত নই।


আপনি অ্যান্ড্রয়েড গ্রেডেল প্লাগইনের কোন সংস্করণ ব্যবহার করছেন?
isaaaaame

Deprecatedআর.জাবায় কি আমদানির বিবৃতি আছে ?
clownba0t

@ আইসআআমে গ্র্যাডল প্লাগইন ৩.৩.২, গ্রেডল সংস্করণ ৫..6.৩
এভলিন

উত্তর:


0

এই পরিবর্তন:

compileOptions {
    dataBinding {
        enabled = true
    }
}

এটিতে:

dataBinding {
    enabled = true
}
compileOptions {

}

এবং এর জন্য com.nextfaze.poweradaptersআপনাকে এতে জেটিফায়ার সক্ষম করতে হবে gradle.properties:

android.useAndroidX=true
android.enableJetifier=true

পরিবর্তন করেছেন। এবং জেটিফায়ার সক্ষম হয়। এখনও একই ত্রুটি।
এভলিন

এবং আপনি আপডেট 2 পড়লে আপনি দেখতে পাবেন এটি অ্যান্ড্রয়েডএক্সের কারণে হয়নি।
এভলিন

0

সমাধান:

build.gradle থাকে

dataBinding {
        enabled true
    }

গ্রেড.প্রোপার্টি থাকে

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

আমি কয়েক ঘন্টা ধরে এই সমস্যাটির সাথে লড়াই করে চলেছি এবং এরপরে এটি সমাধান করেছি:

আপনার প্রকল্পের ডেটাবাইন্ডিং কম্পোনেন্টের জন্য অস্থায়ীভাবে একটি ফাঁকা ইন্টারফেস ঘোষণা করুন।

package androidx.databinding;

public interface DataBindingComponent {
}

এটি সংকলন করুন এবং ত্রুটি চলে যাবে। তবে এখন আসল মূল ত্রুটি প্রকাশিত হবে। যেটি আসলে সমস্ত সমস্যার কারণ হয়ে উঠছিল তবে কোনওভাবে গ্রাস করা হয়েছিল। আমার ক্ষেত্রে এটি অটোভ্যালু থেকে এসেছিল যে ইঙ্গিত করে যে আমি এটিকে ভুলভাবে ব্যবহার করছি

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

এটি সংশোধন করে এবং তারপরে ডামি ইন্টারফেস অপসারণ করে সংকলকটিকে আবার খুশি করে।


ভাল ধারণা, তবে এখনও আমার জন্য ত্রুটি দেখায় 😭
এভলিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.