私はアンドロイドスタジオ3.1にアップグレードして、次のエラーを得ていますim:
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)}
これが私のgradle設定です。
compileSdkVersion 27
//buildToolsVersion '27.0.3'
defaultConfig {
minSdkVersion 16
targetSdkVersion 27
multiDexEnabled true
//...
}
ご覧のとおり、私は27をターゲットにしていますが、すでに24より先になっていますが、それについて不満がありますか。これを修正するために正確に何をすべきですか?私が1.8 Javaに変更した場合、私はたくさんの顧客がいなくてはいけませんか。 Android Studioをアップグレードする前に、なぜこのエラーが表示されないのですか。
これは私が最近入れたLifecycleObserverクラスに関するものかどうかわからない、それはkotlinにあった今、私はそれをJavaに変更しましたが、それでもプロジェクトをきれいにした後に同じエラーが出ます
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'
}
CommonsWareが言及したように、参照のためにあなたのアプリモジュールが問題を解決するためにbuild.gradleのAndroid {...}
クロージャーの中にこれを加えてください:
Android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
...
}
これを解決するには、 google に基づいてJava8を使用する必要があります。(ファイル>プロジェクト構造をクリックして)これを実行できます。ソース互換性とターゲット互換性を変更します。
また、対応するbuild.gradleファイルで直接設定することもできます。
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
}
}
アプリレベルのgradleでは、次のコードを記述する必要があります。
Android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
これらはAndroidのJavaVersion.Javaに由来します。
Javaバージョンの列挙。
9より前: http://www.Oracle.com/technetwork/Java/javase/versioning-naming-139433.html
しゅう
この問題は、ソースの互換性とターゲットの互換性Javaバージョンを最新のAndroid Studioバージョン3.4.1の1.8にダウングレードすることで解決できます。
MacでアプリフォルダーまたはCommand +下矢印を右クリックして、モジュール設定(プロジェクト構造)Winodwを開きます
[適用]または[OK]をクリックします。それはあなたの問題を解決します。
Build.gradleに手動で追加することもできます(モジュール:アプリ)
Android {
...
compileOptions {
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
}
...
}
Build.gradleを更新して(Module:app)compileOptions
ブロックを追加し、JavaVersion.VERSION_1_8
を追加してください
apply plugin: 'com.Android.application'
Android {
compileSdkVersion 28
defaultConfig {
applicationId "ApplicationId"
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Build.gradleでこのコードを使用します
Android {
compileOptions {
incremental true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
これは私にも起こりましたが、動的機能を使用していました。アプリモジュールで既にJava 8の互換性を有効にしていましたが、この互換性の行をDynamic Featureモジュールに追加する必要があり、それが機能しました。