Configurei o ambiente do Android-P SDK com sucesso. Quando tento usar a biblioteca de suporte ao design do Android, encontro erros de construção do projeto. As configurações do projeto são:
IDE: 3.2 Canary 17 Target API: 28 Compile API: 28
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.app.navigationpoc"
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.0-alpha3'
implementation 'androidx.constraintlayout:constraintlayout:1.1.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'
implementation 'com.android.support:design:28.0.0-alpha3'
implementation 'com.android.support:cardview-v7:28.0.0-alpha3'
}
E o erro de falha de compilação é:
Falha na fusão do manifesto: o atributo application @ appComponentFactory value = (androidx.core.app.CoreComponentFactory) de [androidx.core: core: 1.0.0-alpha3] AndroidManifest.xml: 22: 18-86 também está presente em [com.android .support: support-compat: 28.0.0-alpha3] AndroidManifest.xml: 22: 18-91 value = (android.support.v4.app.CoreComponentFactory). Sugestão: adicione 'tools: replace = "android: appComponentFactory"' ao elemento em AndroidManifest.xml: 6: 5-40: 19 para substituir.
fonte
Respostas:
Você pode usar a versão anterior dos pacotes de API dos artefatos ou o novo Androidx, nunca ambos.
Se você quiser usar a versão anterior, substitua suas dependências por
se você deseja usar o Androidx:
fonte
com
não foi substituir nomaterial
noimplementation
?Atualização Importante
O Android não atualizará as bibliotecas de suporte depois
28.0.0
.Portanto, use a biblioteca AndroidX .
androidx
ou qualquer biblioteca, porque alpha, beta, rc podem ter bugs que você não deseja enviar com seu aplicativo.No seu caso
fonte
Adicione isso:
ao seu aplicativo de manifesto
espero que ajude
fonte
@string/action_settings
?* What went wrong: Execution failed for task ':app:generateDebugBuildConfig'. > org.xml.sax.SAXParseException; systemId: file:/C:/D/code/js/emps_app/android/app/src/main/AndroidManifest.xml; lineNumber: 14; columnNumber: 52; The prefix "tools" for attribute "tools:replace" associated with an element type "application" is not bound.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
Eu usei essa opção:
https://developer.android.com/jetpack/androidx/migrate
fonte
O Google introduziu novas dependências AndroidX . Você precisa migrar para o AndroidX, é simples.
Substituí todas as dependências por dependências do AndroidX
você pode encontrar dependências do AndroidX aqui https://developer.android.com/jetpack/androidx/migrate
Opção de migração automática para AndroidX (compatível com Android Studio 3.3+)
Migre um projeto existente para usar o AndroidX selecionando Refactor> Migrate to AndroidX na barra de menus.
fonte
1.Adicionou esses códigos ao seu app / build.gradle:
2. Versão modificada do SDK e das ferramentas para 28:
2. Em seu arquivo AndroidManifest.xml, você deve adicionar duas linhas:
Obrigado pela resposta @Carlos Santiago: A biblioteca de suporte ao design do Android para API 28 (P) não está funcionando
fonte
Biblioteca de suporte de design para androidX é
implementation 'com.google.android.material:material:1.0.0'
fonte
abra o arquivo gradle.properties e adicione estas duas linhas a ele:
limpar e construir
fonte
Observação: você não deve usar as dependências com.android.support e com.google.android.material em seu aplicativo ao mesmo tempo.
Adicione componentes de materiais para Android em seu arquivo build.gradle (app)
Se o seu aplicativo atualmente depende da Design Support Library original, você pode usar a opção Refactor to AndroidX… fornecida pelo Android Studio. Isso atualizará as dependências e o código do seu aplicativo para usar as bibliotecas androidx e com.google.android.material recém-empacotadas.
Se você ainda não deseja alternar para os novos pacotes androidx e com.google.android.material, pode usar os componentes de material por meio da dependência com.android.support:design:28.0.0-alpha3.
fonte
Em primeiro lugar, você deve procurar gradle.properties e esses valores devem ser verdadeiros . Se você não pode vê-los, você deve escrever.
Depois disso, você pode usar as dependências do AndroidX em seu build.gradle (Módulo: app) . Além disso, você deve verificar compileSDKVersion e targetVersion . Eles devem ser no mínimo 28. Por exemplo, estou usando 29.
Portanto, um exemplo de dependência do androidx:
Portanto, você deve pesquisar e ler com atenção. Código feliz.
@canerkaseler
fonte
Eu cruzo essa situação substituindo todos
androidx.*
porappropiate package name
.mude sua linha
para
NOTADO
tools:replace="android:appComponentFactory"
do AndroidManifestfonte
O código abaixo funcionou perfeitamente comigo:
fonte
Experimente isto:
fonte
A documentação do Android é clara sobre isso. Vá para a página abaixo. Abaixo, há duas colunas com os nomes "ARTIFATO DE CONSTRUÇÃO ANTIGO" e "Artefato de construção do AndroidX"
https://developer.android.com/jetpack/androidx/migrate
Agora você tem muitas dependências no gradle. Basta combinar aquelas com os artefatos de compilação do Androidx e substituí-las no gradle.
Isso não será suficiente.
Vá para a sua MainActivity (repita para todas as atividades) e remova a palavra AppCompact Activity na instrução "public class MainActivity extends AppCompatActivity" e escreva a mesma palavra novamente. Mas desta vez a biblioteca androidx é importada. Até agora, o arquivo de suporte do appcompact foi importado e usado (também, remova a instrução de importação appcompact).
Além disso, vá para o arquivo de layout. Suponha que você tenha um layout de restrição, então você pode notar que o layout de restrição da primeira linha no arquivo xml tem algo relacionado a appcompact. Portanto, basta excluí-lo e escrever o layout de restrição novamente. Mas agora o layout de restrição relacionado ao androidx foi adicionado.
repita isso para quantas atividades e tantos arquivos de layout xml.
Mas não se preocupe: o Android Studio exibe todos os erros possíveis durante a compilação.
fonte
Teve um problema semelhante. Adicionado em build.gradle e funcionou para mim.
fonte
se você quiser resolver este problema sem migrar para o AndroidX (eu não recomendo)
esse problema de fusão de manifesto está relacionado a uma de suas dependências usando o androidX.
você precisa diminuir a versão de lançamento desta dependência. para o meu caso:
Eu estava usando o google ou firebase
Tenho que diminuir 15.0.1 para usar na biblioteca de suporte.
fonte
Adicionando
androidTestImplementation 'androidx.test:runner:1.2.0-alpha05'
obras para mim.fonte