Библиотека поддержки дизайна Android для API 28 (P) не работает - PullRequest
0 голосов
/ 10 июня 2018

Я успешно настроил среду Android-P SDK.Когда я пытаюсь использовать библиотеку поддержки дизайна Android, я сталкиваюсь с ошибками сборки проекта.Конфигурации проекта:

IDE: 3.2 Canary 17 Target API: 28 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'
}

И ошибка сборки:

Сбой манифеста: Атрибут application @ appComponentFactory value = (androidx.core.app.CoreComponentFactory) из [androidx.core: core: 1.0.0-alpha3] AndroidManifest.xml: 22: 18-86 также присутствует в [com.android.support:support-compat:28.0.0-alpha3] AndroidManifest.xml: 22: 18-91 value = (android.support.v4.app.CoreComponentFactory).Предложение: добавьте 'tools: replace = "android: appComponentFactory"' к элементу на AndroidManifest.xml: 6: 5-40: 19, чтобы переопределить.

Ответы [ 15 ]

0 голосов
/ 14 июля 2019

Правильное исправление, как описано в этом ответе.

Вы должны включить jetifier, добавив эти две строки в файл gradle.properties:

android.useAndroidX=true
android.enableJetifier=true

Это будет в основном обмениваться Зависимости библиотеки поддержки Android в зависимости вашего проекта с AndroidX-ones .

В случае gradle.properties не существует, просто создайте файл с именем gradle.properties в своем корневом проекте и добавьте в него вышеупомянутые строки:

root
|--gradle.properties
|--build.gradle
|--settings.gradle
|--app
|----build.gradle
0 голосов
/ 25 июля 2019

Была похожая проблема.Добавил в build.gradle и он у меня сработал.

 compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
0 голосов
/ 24 июня 2019

Библиотека поддержки дизайна для androidX: implementation 'com.google.android.material:material:1.0.0'

0 голосов
/ 05 июля 2019

Документация Android ясна на этом. Перейдите на страницу ниже. Под ней есть два столбца с именами "СТАРЫЙ СТИЛЬ АРТИФАКТ" и "Артефакт сборки AndroidX"

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

Теперь у вас много зависимостей в gradle. Просто сопоставьте их с артефактами сборки Androidx и замените их в gradle.

Этого будет недостаточно.

Перейдите к своей MainActivity (повторите это для всех действий) и удалите слово AppCompact Activity в выражении «открытый класс MainActivity расширяет AppCompatActivity» и снова напишите то же слово. Но на этот раз библиотека androidx импортируется. Пока не поддерживается файл поддержки appcompactимпортированы и использованы (также удалите этот appcompact import import).

Кроме того, перейдите в файл макета.Предположим, у вас есть макет ограничения, тогда вы можете заметить, что макет ограничения первой строки в xml-файле имеет что-то связанное с appcompact. Просто удалите его и снова напишите макет ограничения. Но теперь добавлен макет ограничения, связанного с androidx.

Повторите это для такого же количества действий и для множества файлов макета XML.

Но не волнуйтесь: Android Studio отображает все возможные ошибки при компиляции.

0 голосов
/ 08 ноября 2018

Я использовал эту опцию:

В Android Studio 3.2 и более поздних версиях вы можете быстро перенести существующий проект в AndroidX, выбрав «Рефакторинг»> «Перенос в AndroidX» в строке меню.

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

0 голосов
/ 16 февраля 2019

Google ввел новые AndroidX зависимости.Вам нужно перейти на AndroidX, это просто.

Я заменил все зависимости на зависимости AndroidX

Старая зависимость дизайна

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

Новая зависимость дизайна AndroidX

implementation 'com.google.android.material:material:1.0.0-rc01'

вы можете найти зависимости AndroidX здесь https://developer.android.com/jetpack/androidx/migrate


Параметр автоматической миграции AndroidX (поддерживается в Android Studio 3.3 +)

Миграциясуществующий проект для использования AndroidX, выбрав Refactor> Migrate to AndroidX в строке меню.

0 голосов
/ 09 октября 2018

1.Добавлены эти коды в ваше приложение / build.gradle:

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

2. Модифицированная версия SDK и инструментов до 28:

compileSdkVersion 28
buildToolsVersion '28.0.3'
targetSdkVersion  28

2.В вашем AndroidManifest.XML-файл, вы должны добавить две строки:

<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">

Спасибо за ответ @Carlos Santiago: Библиотека поддержки дизайна Android для API 28 (P) не работает

0 голосов
/ 07 ноября 2018

откройте файл gradle.properties и добавьте в него две строки:

android.useAndroidX = true
android.enableJetifier = true

очистите и соберите

0 голосов
/ 28 сентября 2018

Важное обновление

Android не будет обновлять библиотеки поддержки после 28.0.0.

Это будет последний выпуск функции в пакете android.support, и разработчикам рекомендуется перейти на AndroidX 1.0.0 .

Поэтому используйте библиотеку AndroidX .

  • Не использовать оба Поддержка и AndroidX в проекте.
  • Ваш библиотечный модуль или зависимости все еще могут иметь библиотеки поддержки. Androidx Jetifier будет обрабатывать его.
  • Использовать стабильную версию androidx или любую библиотеку, потому что альфа, бетаУ rc могут быть ошибки, которые вы не хотите отправлять вместе с вашим приложением.

В вашем случае

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'
}
0 голосов
/ 08 октября 2018

Попробуйте это:

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