Atualizei para o android studio 3.1 e estou recebendo o seguinte erro:
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)}
aqui está a minha configuração gradle:
compileSdkVersion 27
//buildToolsVersion '27.0.3'
defaultConfig {
minSdkVersion 16
targetSdkVersion 27
multiDexEnabled true
//...
}
Como você pode ver, estou direcionando 27, que já estão à frente dos 24 dos quais está reclamando. O que exatamente devo fazer para corrigir isso? Se eu mudar para 1,8 java, não sentirei falta de muitos clientes? Por que não recebi esse erro antes de atualizar o android studio?
Não sei se isso é sobre a classe LifecycleObserver que eu inseri recentemente, estava no kotlin e agora mudei para java, mas ainda assim recebo o mesmo erro após a limpeza do projeto:
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);
}
}
Como rastrear a origem do erro para que eu possa corrigi-lo?
aqui estão as minhas dependências de versão:
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'
}
targetSdkVersion
. "O que exatamente devo fazer para consertar isso?" - tente compilar com a compatibilidade com Java 8 ativada . "se eu mudar para 1.8 java, não vou perder muitos clientes?" - não para os métodos de interface padrão dos quais a mensagem de erro está reclamando. "por que eu não estava recebendo esse erro antes de atualizar o android studio." - talvez uma dependência implícita (por exemplo, ligação de dados).Respostas:
Como o CommonsWare mencionou, para referência, adicione isso dentro do
android {...}
fechamento no build.gradle para o seu módulo de aplicativo resolver o problema:fonte
Você deve usar o Java8 para resolver isso. Com base no google, você pode fazer isso (clique em Arquivo> Estrutura do projeto ). e altere a compatibilidade de origem e a compatibilidade de destino.
E você também pode configurá-lo diretamente no arquivo build.gradle correspondente:
fonte
No gradle no nível do aplicativo, você deve escrever este código:
Eles vêm do JavaVersion.java no Android.
@canerkaseler
fonte
Atualize seu build.gradle (Module: app) add
compileOptions
block e addJavaVersion.VERSION_1_8
fonte
Você pode resolver esse problema fazendo o downgrade da versão Java da compatibilidade de origem e compatibilidade de destino para 1.8 na versão mais recente do Android Studio 3.4.1
Abra as Configurações do módulo (Estrutura do projeto) Winodw clicando com o botão direito do mouse na pasta do aplicativo ou Command + Seta para baixo no Mac
Vá para Módulos -> Propriedades
Alterar a compatibilidade de origem e a versão de compatibilidade de destino para 1.8
Clique em Aplicar ou OK É isso. Isso resolverá o seu problema.
Além disso, você pode adicionar manualmente o build.gradle (Módulo: app)
fonte
Use este código em seu build.gradle
fonte
Meu projeto usa ButterKnife e Retro lambda, definindo JavaVersion.VERSION_1_8 não funcionará. Ele sempre culpa a função de interface estática do ButterKnife até encontrar esse Migrate from Retrolambda
TL; DR
Basta adicionar JavaVersion.VERSION_1_8 e REMOVER completamente a retrolambda do seu projeto. Ele será construído com sucesso.
fonte
Isso também aconteceu comigo, mas usando Recursos Dinâmicos. Eu já tinha a compatibilidade com o Java 8 ativada no módulo de aplicativo, mas precisava adicionar essas linhas de compatibilidade ao módulo Dynamic Feature e, em seguida, funcionou.
fonte
Definir o minSdkVersion para 21 de 19 resolveu o problema para mim.
fonte