tools - what are androidx artifacts




Biblioteca de suporte de design do Android para API 28(P) não funciona (10)

Atualização Importante

O Android não atualizará as bibliotecas de suporte após 28.0.0 .

Este será o último lançamento do recurso sob o pacote android.support, e os desenvolvedores são incentivados a migrar para o AndroidX 1.0.0 .

Então use biblioteca AndroidX .

  • Não use o suporte e o AndroidX no projeto.
  • Seu módulo de biblioteca ou dependências ainda podem ter bibliotecas de suporte. O Androidx Jetifier vai lidar com isso.
  • Use uma versão estável do androidx ou de qualquer biblioteca, porque alpha, beta, rc pode ter erros que você não quer enviar com seu aplicativo.

No seu caso

dependencies {
    implementation 'androidx.appcompat:appcompat:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.1'

    implementation 'com.google.android.material:material:1.0.0'
    implementation 'androidx.cardview:cardview:1.0.0'
}

Eu configurei o ambiente android-P SDK com sucesso. Quando eu tento usar a biblioteca de suporte de design android enfrento erros de compilação do projeto. As configurações do projeto são:

IDE: 3.2 API de destino do Canary 17: 28 API de compilação: 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 erro de falha de construção é:

Fusão de manifesto falhou: aplicativo de atributo @ 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 anular.


1.Adicionado estes códigos para o seu app / build.gradle:

configurations.all {
   resolutionStrategy.force 'com.android.support:support-v4:26.1.0' // the lib is old dependencies version;       
}

2.Modified sdk e versão de ferramentas para 28:

compileSdkVersion 28
buildToolsVersion '28.0.3'
targetSdkVersion  28

2. No seu arquivo AndroidManifest.xml, você deve adicionar duas linhas:

<application
    android:name=".YourApplication"
    android:appComponentFactory="anystrings be placeholder"
    tools:replace="android:appComponentFactory"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar">

Obrigado pela resposta @Carlos Santiago: biblioteca de suporte de design Android para API 28 (P) não funciona


A documentação do Android é clara sobre isso. Vá para a página abaixo. Abaixo, há duas colunas com os nomes "ARTIFACT DE CONSTRUÇÃO ANTIGA" e "Artefato de construção AndroidX"

https://developer.android.com/jetpack/androidx/migrate

Agora você tem muitas dependências no gradle. Basta combinar com os artefatos de construção do Androidx e substituí-los no gradle.

Isso não será suficiente.

Vá para a sua MainActivity (repita isso para todas as atividades) e remova a palavra AppCompact Activity na declaração "public class MainActivity extends AppCompatActivity" e escreva a mesma palavra novamente.Mas desta vez a biblioteca androidx é importada.Uttil agora o arquivo de suporte appcompact foi importado e usado (também, remova essa instrução de importação appcompact).

Além disso, vá para o arquivo de layout. Suponha que você tem um layout de restrição, então você pode notar que o layout de restrição de primeira linha no arquivo xml tem algo relacionado ao appcompact.So basta excluí-lo e escrever o layout de restrição novamente.Mas agora androidx layout de restrição relacionada é adicionado.

repita isso para tantas atividades e quantos arquivos de layout xml.

Mas não se preocupe: o Android Studio exibe todos esses erros possíveis durante a compilação.


Abaixo do código funcionou perfeitamente comigo:

dependencies {
    api 'com.android.support:design:28.0.0-alpha3'

    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    testImplementation 'junit:junit:4.12'

    androidTestImplementation 'androidx.test:runner:1.1.0-alpha2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha2'
}

Biblioteca de suporte ao design para androidX é a implementation 'com.google.android.material:material:1.0.0'


Eu androidx.* essa situação substituindo todos os androidx.* appropiate package name .

mude sua linha

implementation 'androidx.appcompat:appcompat:1.0.0-alpha3'
implementation 'androidx.constraintlayout:constraintlayout:1.1.1'

androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'

para

implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
implementation 'com.android.support.constraint:constraint-layout:1.1.1'

androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

NOTADO

  • remover tools:replace="android:appComponentFactory" do AndroidManifest

O Google introduziu novas dependências do AndroidX . Você precisa migrar para o AndroidX, é simples.

Substituí todas as dependências por dependências do AndroidX

Dependência de design antiga

dependencies {
// ...
implementation 'com.google.android.material:material:1.0.0-beta01'
// ...

Nova dependência de design do AndroidX

implementation 'com.android.support:design:28.0.0'

você pode encontrar dependências AndroidX aqui https://developer.android.com/jetpack/androidx/migrate


Opção de migração automática do AndroidX (suportada no android studio 3.3+)

Migre um projeto existente para usar o AndroidX selecionando Refatorar> Migrar para o AndroidX na barra de menus.


Tente isto:

 implementation 'com.android.support:appcompat-v7:28.0.0-alpha1' 

Você pode usar a versão anterior de pacotes de APIs ou o novo Androidx, nunca os dois.

Se você quiser usar a versão anterior, substitua suas dependências por

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
    implementation 'com.android.support.constraint:constraint-layout:1.1.1'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

    implementation 'com.android.support:design:28.0.0-alpha3'
    implementation 'com.android.support:cardview-v7:28.0.0-alpha3'
}

se você quiser usar o Androidx:

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.google.android.material:material:1.0.0-alpha3'
    implementation 'androidx.cardview:cardview:1.0.0-alpha3'
}

abra o arquivo gradle.properties e adicione estas duas linhas a ele:

android.useAndroidX = true
android.enableJetifier = true

limpar e construir





android-9.0-pie