android - 베타 - 안드로이드 p 업데이트




API 28(P) 용 Android 디자인 지원 라이브러리가 작동하지 않음 (10)

중요 업데이트

Android는 28.0.0 이후에 지원 라이브러리를 업데이트하지 않습니다.

이것은 android.support 패키지의 마지막 기능 릴리스가 될 것이며 개발자는 AndroidX 1.0.0 으로 마이그레이션하는 것이 좋습니다.

그래서 AndroidX 라이브러리를 사용 AndroidX .

  • 프로젝트에서 Support AndroidX 함께 사용 하지 마십시오 .
  • 라이브러리 모듈 또는 종속성에는 여전히 지원 라이브러리가있을 수 있습니다. Androidx Jetifier가 처리합니다.
  • 알파, 베타, rc에는 앱과 함께 제공하고 싶지 않은 버그가있을 수 androidx 또는 모든 라이브러리의 안정 버전을 사용하십시오.

귀하의 경우

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'
}

android-P SDK 환경을 성공적으로 설정했습니다. 안드로이드 디자인 지원 라이브러리를 사용할 때 프로젝트 빌드 오류가 발생합니다. 프로젝트 구성 :

IDE : 3.2 Canary 17 대상 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'
}

빌드 실패 오류 :

매니페스트 합병이 실패했습니다 : [androidx.core : core : 1.0.0-alpha3]의 속성 application @ appComponentFactory value = (androidx.core.app.CoreComponentFactory) 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의 요소에 추가하여 재정의하십시오.


1. app / 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 : API 28 (P) 용 Android 디자인 지원 라이브러리가 작동하지 않음


androidX를위한 디자인 지원 라이브러리는 implementation 'com.google.android.material:material:1.0.0'


grale.properties 파일을 열고이 두 줄을 추가하십시오 :

android.useAndroidX = true
android.enableJetifier = true

청결하고 지어 라.


나는 모든 androidx.*appropiate package nameandroidx.* 그 상황을 androidx.* .

선을 바꾸어 라.

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'

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'

유명한

  • tools:replace="android:appComponentFactory" 제거 tools:replace="android:appComponentFactory" AndroidManifest의 tools:replace="android:appComponentFactory"

아래 코드는 완벽하게 작동했습니다.

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'
}

이 시도:

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

이걸 더해:

tools:replace="android:appComponentFactory"
android:appComponentFactory="whateverString"

매니페스트 애플리케이션에

<application
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    tools:replace="android:appComponentFactory"
    android:appComponentFactory="whateverString">

도움이되기를 바랍니다.


적절한 해결책은 this 답변에서 논의 된대로입니다.

이 두 줄을 gradle.properties 파일에 추가하여 jetifier 를 활성화해야합니다.

android.useAndroidX=true
android.enableJetifier=true

이것은 기본적으로 AndroidX 와 프로젝트 종속성에서 Android Support Library 종속성 교환 합니다.

gradle.properties 가 존재하지 않는 경우에는 루트 프로젝트에 gradle.properties라는 파일을 만들고 위에서 언급 한 행을 추가하십시오.

root
|--gradle.properties
|--build.gradle
|--settings.gradle
|--app
|----build.gradle

참고 : 동시에 앱에서 com.android.support 및 com.google.android.material 종속성을 사용해서는 안됩니다.

안드로이드에 Material 구성 요소를 추가하는 방법

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

}

현재 귀하의 앱이 원래의 디자인 지원 라이브러리에 의존하는 경우 Android Studio에서 제공하는 Refactor to AndroidX ... 옵션을 사용할 수 있습니다. 그렇게하면 새로 패키지 된 androidx 및 com.google.android.material 라이브러리를 사용하도록 앱의 종속성과 코드가 업데이트됩니다.

새로운 androidx 및 com.google.android.material 패키지로 전환하지 않으려면 com.android.support:design:28.0.0-alpha3 종속성을 통해 Material Components를 사용할 수 있습니다.







android-9.0-pie