android - 사용법 - react native 강좌




Android 네이티브 또는 ExpoKit에서 Material 및 appcompat Manifest 합병이 실패했습니다. (6)

'android.support : 28.0.0 '을 28.0.0 업데이트 28.0.0 .

그러나 그것은 빌드에서 오류를 가져 왔습니다.

Attribute [email protected] value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91

    is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).

    Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:8:5-23:19 to override.

그런 다음 Logcat에서이 오류가 발생합니다.

Manifest merger failed

내 app.gradle :

  configurations.all {
    resolutionStrategy.force 'com.android.support:design:28.0.0'
    resolutionStrategy.force "com.android.support:support-v4:28.0.0"
    resolutionStrategy.force "com.android.support:support-media-compat:28.0.0"
  }
...
dependencies {
  implementation 'com.android.support:multidex:1.0.1'

  // Our dependencies
  implementation 'com.android.support:appcompat-v7:28.0.0'


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

어떻게 수정해야합니까?

나는 당신의 해결책이 필요합니다.

미리 감사드립니다.


  1. AndroidX ( Instruction )로 업그레이드 한 다음 npm update 를 실행하십시오. 일부 플러그인이 손상된 경우 이전 변경 사항을 취소하고 두 번째 단계로 이동하십시오.

  2. Google Play 서비스 버전을 다운 그레이드합니다. android/app/build.gradle 변경

compile 'com.google.android.gms:play-services-<service_name>:+'

compile 'com.google.android.gms:play-services-<service_name>:16.0.0'

그래서 제 경우에는 <sevice_name> location 였습니다. 하지만 다른 사람의 경우에는 다른 Google Play 서비스 (예 : http://www.androiddocs.com/google/play-services/setup.html 목록)와 다를 수 있습니다.

그래서 해결되었지만 두 번째 단계는 일부 RN 플러그인이 AndroidX로 업데이트 될 때까지 일시적으로 수정됩니다.


@MehulSolanki 답을 참고하여 내 검색을 통해 해결책을 찾았습니다.

나는 추가한다.

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

AndroidManifest.xml

com.android.tools.build:gradl을 업데이트하십시오.

dependencies {
    classpath 'com.android.tools.build:gradle:3.2.1'
  }

그리고 이것을 gradle.properties 파일에 추가하십시오.

android.useAndroidX=true
android.enableJetifier=true

오류 : [TAG] '$ {animal.sniffer.version}'변수를 확인하지 못했습니다.

오류 : [TAG] 변수 '$ {junit.version}'을 (를) 확인할 수 없습니다.

위의 오류가 발생한 경우

  1. 파일 -> 캐시 무효화 / 다시 시작
  2. 빌드 -> 프로젝트 정리

오류 : package android.support.annotation이 존재하지 않습니다. 오류 : 기호 클래스를 찾을 수 없습니다. Nullable

위의 오류가 발생한 경우

implementation 'androidx.annotation:annotation:1.1.0' 추가 implementation 'androidx.annotation:annotation:1.1.0'

변경 import android.support.annotation.Nullable; => androidx.annotation.Nullable;

변경 import android.support.annotation.NonNull; => androidx.annotation.NonNull;

컴파일 버전 대상 버전 28 이어야합니다 .


근본 원인은 Androidx 로의 이전과 관련이 있습니다. Google Play 서비스가 androidX로 업데이트되었습니다. MR03web 감사합니다 MR03web 이 문제는 react-native-device-info에 속합니다. 가장 좋은 옵션은 다음을 사용하여 react-native-device-info 를 업그레이드하는 것입니다.

yarn upgrade react-native-device-[email protected].1.2
cd android && gradlew clean
react-native run-android

또는 업그레이드하지 않으려면 com.google.android.gms 를 다음 react-native-device-info 에서 제외해야합니다. 감사

implementation(project(":react-native-device-info"),  {
  exclude group: "com.google.android.gms"
})
implementation "com.google.android.gms:play-services-gcm:16.0.0"

이 문제에 대해 하루 종일 보낸 후. 마지막으로이 문제를 해결했습니다.

반응 원시 장치 정보 및 반응 원시 이미지 이미지 라이브러리에서 오류가 발생했습니다. 방금 package.json 파일에서 해당 라이브러리를 제거한 다음 설치합니다.

"react-native-device-info": "^ 2.1.2", "react-native-fast-image": "^ 6.0.3" 이 최신 버전

나는 아래 gradle 버전을 사용했습니다.

classpath 'com.android.tools.build:gradle:3.3.1'

아래 속성 버전을 사용했습니다.

distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip

나는 아래 버전을 사용했다.

buildToolsVersion = "28.0.3"
minSdkVersion = 16
compileSdkVersion = 28
targetSdkVersion = 28
supportLibVersion = "28.0.0"


@Frank's 대답에 따르면 라이브러리는 services-gcm:+ 를 의존성으로 사용했으며 최신 gcm 버전이이 문제를 일으켰습니다.

그리고 저는 프로젝트에서 :react-native-admob 을 사용했습니다. 그래서 나는 android/app/build.gradle 에서 다음 줄을 android/app/build.gradle

에서:

implementation project(':react-native-admob')

받는 사람 :

implementation(project(":react-native-admob"),  {
        exclude group: "com.google.android.gms"
})
implementation "com.google.android.gms:play-services-ads:16.0.0"






expo