ডিফল্ট ইন্টারফেস পদ্ধতিগুলি কেবল অ্যান্ড্রয়েড এন দিয়ে শুরু করে সমর্থিত


262

আমি অ্যান্ড্রয়েড স্টুডিও 3.1 এ আপগ্রেড করেছি এবং আমি নিম্নলিখিত ত্রুটি পেয়েছি:

    Default interface methods are only supported starting with Android N (--min-api 24): void android.arch.lifecycle.DefaultLifecycleObserver.onCreate(android.arch.lifecycle.LifecycleOwner)
Message{kind=ERROR, text=Default interface methods are only supported starting with Android N (--min-api 24): void android.arch.lifecycle.DefaultLifecycleObserver.onCreate(android.arch.lifecycle.LifecycleOwner), sources=[Unknown source file], tool name=Optional.of(D8)}

এখানে চিত্র বর্ণনা লিখুন

এখানে আমার গ্রেড কনফিগারেশন রয়েছে:

compileSdkVersion 27
//buildToolsVersion '27.0.3'
defaultConfig {
    minSdkVersion 16
    targetSdkVersion 27
     multiDexEnabled true
     //...
   }

আপনি দেখতে পাচ্ছেন যে, আমি ২ target টি লক্ষ্যবস্তু করছি যা ইতিমধ্যে ২৪ এর আগে যা অভিযোগ করে। এটি ঠিক করার জন্য আমার ঠিক কী করা উচিত? আমি যদি ১.৮ জাভাতে পরিবর্তন হয় তবে আমি কি অনেক গ্রাহককে মিস করব না? অ্যান্ড্রয়েড স্টুডিওগুলি আপগ্রেড করার আগে আমি কেন এই ত্রুটিটি পাচ্ছি না?

আমি জানি না যে এটি আমি সম্প্রতি চালিত লাইফাইস্কেলঅবার্সার ক্লাস সম্পর্কে কিনা, এটি কোটলিনে ছিল এবং এখন আমি এটি জাভাতে পরিবর্তন করেছি তবে প্রকল্প পরিষ্কারের পরেও একই ত্রুটি পেয়েছি:

    public class LifeCycleAwareObserver implements LifecycleObserver {

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    public void  onAppBackgrounded() {
        AnalyticsUtils.trackStartSession(true);
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    public void onAppForegrounded() {
        AnalyticsUtils.trackStartSession(false);
    }
}

ত্রুটিটি কোথায় থেকে আসছে তা কীভাবে চিহ্নিত করব যাতে আমি এটি সংশোধন করতে পারি?

এখানে আমার সংস্করণ নির্ভরতা:

project.ext {

        firebase_version = '12.0.0'

        supportlib_version = '27.0.2'

        room_version = '1.0.0'

        espresso_version = '3.0.1'

        archLifecycleVersion = '1.1.1'
    }

20
"আপনি দেখতে পাচ্ছেন যে আমি ২ 27 টার্গেট করছি যা ইতিমধ্যে ২৪ এর আগে যে অভিযোগ করছে?" - এটি আপনার সম্পর্কে অভিযোগ করছে না targetSdkVersion। "এটি ঠিক করার জন্য আমার ঠিক কী করা উচিত?" - জাভা 8 সামঞ্জস্যতা সক্ষম সঙ্গে সংকলন চেষ্টা করুন । "আমি যদি 1.8 এ পরিবর্তন করি তবে আমার অনেক গ্রাহক নিখোঁজ হবেন?" - ত্রুটি বার্তাটি যে ডিফল্ট ইন্টারফেস পদ্ধতিতে অভিযোগ করছে তার জন্য নয়। "অ্যান্ড্রয়েড স্টুডিও আপগ্রেড করার আগে আমি কেন এই ত্রুটিটি পাচ্ছিলাম না" "- সম্ভবত একটি অন্তর্নিহিত নির্ভরতা (যেমন, ডেটা বাইন্ডিং) inding
কমন্সওয়্যার 27'18

2
@ কমন্সওয়্যার, আপনি যেমন বলেছিলেন ঠিক তেমনই ছিল। ১.৮ এ পরিবর্তিত হয়ে সমস্যার সমাধান হয়েছে তবে কী হয় তা দেখার জন্য আমাকে পুরানো ডিভাইসে এটি পরীক্ষা করে দেখতে হবে। কোডটি করেনি এটা compileOptions {sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8} ছিল
j2emanue

উত্তর:


596

CommonsWare হিসাবে উল্লেখ করা হয়েছে, রেফারেন্সের android {...}জন্য আপনার অ্যাপ্লিকেশন মডিউলটি ইস্যু সমাধানের জন্য বিল্ড.gradle এ বন্ধের ভিতরে এটি যুক্ত করুন :

android {
...
  compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
...
}

13
দয়া করে উল্লেখ করুন যে এটি এর মতো অ্যান্ড্রয়েড কোঁকড়ানো ধনুর্বন্ধনী এর ভিতরে হওয়া উচিত: অ্যান্ড্রয়েড {// এখানে যুক্ত করুন}
আইডি

3
@ j2emanue আমি এটি ইতিমধ্যে বিল্ড.gradle এ যুক্ত করেছি, তবে এখনও একই সমস্যাটি
পেয়েছি

আমি আপনার গ্রেড ফাইলটি প্রকল্প এবং মডিউল গ্রেড ফাইল উভয়ই দেখতে চাই। হতে পারে একটি প্রশ্ন পোস্ট করুন।
j2emanue

এটি যুক্ত করে প্রকল্পের কাঠামোয় অপ্রত্যাশিত রেফারেন্সটি দেখানো হবে সে সম্পর্কে কোনও ধারণা?
উর্বশ রানা

1
দীর্ঘশ্বাস কেন গুগল কেবলমাত্র ডিফল্ট প্রকল্প সেটিংসে উপযুক্ত জিনিস রাখতে পারে না? ..
রোমান ট্রুবা

65

আপনি এই উপর ভিত্তি করে সমাধান করতে Java8 ব্যবহার করা উচিত google আপনি (ক্লিক করে এটা করতে পারেন ফাইল> প্রকল্প গঠন )। এবং উত্স সামঞ্জস্যতা এবং লক্ষ্য সামঞ্জস্যতা পরিবর্তন করুন।

এখানে চিত্র বর্ণনা লিখুন

এবং আপনি এটি সরাসরি সম্পর্কিত বিল্ড্রেড ফাইলটিতেও কনফিগার করতে পারেন:

android {
  ...
  // Configure only for each module that uses Java 8
  // language features (either in its source code or
  // through dependencies).
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

থ্যাঙ্কুউ প্রোগ্রামার.উস জব
জাফর ইকবাল

53

অ্যাপ্লিকেশন-স্তরের গ্রেডে আপনাকে এই কোডগুলি লিখতে হবে:

android {
...
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

এগুলি অ্যান্ড্রয়েডের জাভা ভার্সন.জাভা থেকে আসে ।

জাভা সংস্করণগুলির একটি গণনা।

9 এর আগে: http://www.oracle.com/technetwork/java/javase/versioning-naming-139433.html

9 এর পরে: http://openjdk.java.net/jeps/223

@canerkaseler


1
কোন ফাইলটি আপডেট করবেন সে সম্পর্কে ব্যাখ্যা এবং তথ্যের জন্য ধন্যবাদ। অ্যাপ্লিকেশন-স্তর বা প্রকল্প স্তর।
ললিত শর্মা

30

আপনার বিল্ড.gradle আপডেট করুন (মডিউল: অ্যাপ) compileOptionsব্লক এবং যুক্ত করুন addJavaVersion.VERSION_1_8

apply plugin: 'com.android.application'

android {
    .................
    .........................
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

25

আপনি উত্স সামঞ্জস্যতা এবং টার্গেট সামঞ্জস্যতা জাভা সংস্করণ সর্বশেষে অ্যান্ড্রয়েড স্টুডিও সংস্করণ 3.4.1 এ 1.8 এ ডাউনগ্রেড করে এই সমস্যাটি সমাধান করতে পারেন

  1. মডিউল সেটিংস খুলুন (প্রকল্পের কাঠামো) উইন্ডো অ্যাপ্লিকেশন ফোল্ডারে ডান ক্লিক করে বা ম্যাকের উপর কমান্ড + ডাউন অ্যারো Win এখানে চিত্র বর্ণনা লিখুন

  2. মডিউল -> বৈশিষ্ট্যে যান এখানে চিত্র বর্ণনা লিখুন

  3. উত্স সামঞ্জস্যতা এবং লক্ষ্য সামঞ্জস্য সংস্করণ 1.8 এ পরিবর্তন করুন এখানে চিত্র বর্ণনা লিখুন

  4. অ্যাপ্লিকেশন বা ঠিক আছে এটি ক্লিক করুন। এটি আপনার সমস্যা সমাধান করবে।

এছাড়াও আপনি ম্যানুয়ালি বিল্ড.gradle এ যোগ করতে পারেন (মডিউল: অ্যাপ)

android {
...

compileOptions {
        sourceCompatibility = '1.8'
        targetCompatibility = '1.8'
    }

...
}

1
এটি কেবল আমার সমস্যার সমাধান করেছে। তবে দয়া করে আমাকে পরামর্শ দিন আপনি কীভাবে জানেন যে এটিই এর সমাধান?
মেহরদাদ সিরাফি

5

আপনার বিল্ডড্র্যাডলে এই কোডটি ব্যবহার করুন

android {
    compileOptions {
        incremental true
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

2

আমার প্রকল্প বাটারনিফ এবং রেট্রো ল্যাম্বদা ব্যবহার করে জাভা ভার্সন সেট করে V ভার্সন_1_8 কাজ করবে না। রেট্রোলাম্বদা থেকে এই মাইগ্রেটটি না পাওয়া পর্যন্ত এটি সর্বদা বাটারকনিফ স্ট্যাটিক ইন্টারফেস ফাংশনে দোষ দেয়

টি এল; ডিআর

আপনার প্রকল্প থেকে জাভা ভার্সন.VERSION_1_8 যুক্ত করুন এবং সম্পূর্ণভাবে রেট্রোলেম্বদা সরান। এটি সফলভাবে নির্মাণ করবে।


0

এটি আমার ক্ষেত্রেও হয়েছিল তবে ডায়নামিক বৈশিষ্ট্যগুলি ব্যবহার করে। আমার কাছে ইতিমধ্যে অ্যাপ্লিকেশন মডিউলে জাভা 8 সামঞ্জস্য সক্ষম হয়েছে তবে ডায়নামিক ফিচার মডিউলে আমাকে এই সামঞ্জস্যের লাইনগুলি যুক্ত করতে হয়েছিল এবং তারপরে এটি কার্যকর হয়েছিল।


0

19 থেকে 21 এ minSdkVersion সেট করা আমার জন্য সমস্যাটি সমাধান করেছে।

defaultConfig {
        applicationId "com.example"
        minSdkVersion 21
        targetSdkVersion 29
        versionCode 23
        versionName "1.0"
        vectorDrawables.useSupportLibrary = true
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.