source

콘솔에 설치 오류가 표시됨: INSTALL FAIL CONCERTING PROWDER 설치

ittop 2023. 9. 24. 13:06
반응형

콘솔에 설치 오류가 표시됨: INSTALL FAIL CONCERTING PROWDER 설치

안드로이드 SDK에서 NotesList 샘플 프로그램을 실험하고 있습니다. 프로그램에 약간의 변형을 가했지만 편집된 버전을 설치할 때 원래 노트 프로그램이 이미 장치에 있을 때 설치하려고 하면 콘솔에 INSTALL_FAILED_CONPLICING_PROVIDER라는 메시지가 계속 나타납니다.공급자를 고유 데이터베이스로 만들려면 공급자에서 무엇을 변경해야 합니까?원래 노트 프로그램을 제거한 다음 편집된 버전을 설치하면 잘 작동합니다.

android:authorities고유해야 합니다.이 특성에 대한 설명서 인용:

충돌을 방지하기 위해 권한 이름은 Java 스타일 명명 규칙(예: com.example.provider.cartoonprovider)을 사용해야 합니다.일반적으로 공급자를 구현하는 ContentProvider 하위 클래스의 이름입니다.

이 다른 하려면 할 수 .applicationIdSuffix합니다를 합니다.applicationId당신의 매니페스토에서, 다음과 같이.

<...
 android:authorities="${applicationId}.contentprovider"/>

이전 버전의 앱이 설치되어 있고 (지원) 라이브러리 또는 매니페스트 파일을 변경한 경우에도 이 문제가 발생할 수 있습니다.제()Settings --> Application --> <your application> --> Uninstall )에서.

라이브러리 프로젝트(특히 최근에 이클립스에서 Android Studio로 마이그레이션한 경우) 내에서 Google Maps + Google Play Services를 사용하는 경우 동일한 라이브러리를 사용하는 다른 앱이 장치에 이미 설치되어 있지만 라이브러리를 사용하는 앱을 실행하려고 할 때 이 오류가 발생할 수 있습니다.

수정: 의 Android 섹션에 defaultConfig.applicationId가 정의되어 있는지 확인합니다.build.gradle라이브러리를 사용하여 각 프로젝트별로 파일을 만듭니다.

android {
    defaultConfig.applicationId = "com.company.appname"
}

특정 앱의 패키지 이름을 사용하는 것을 추천합니다.이 수정을 통해 공급자 이름이 더 이상 충돌하지 않고 앱이 예상대로 실행됩니다.

증상

1.) 사용자가 Play Store에서 앱을 설치할 때 무서운 "-505" 설치 오류를 보고 있습니다.

2.) Android Studio [INSTALL_FAILED_CONPLICTING_PROVIDER]를 통해 라이브러리를 사용하는 두 번째 앱을 설치하려고 하면 다음 오류 메시지가 나타납니다.

Conflicting Provider

콘솔에 다음과 같은 메시지가 나타납니다.

Package couldn't be installed in /data/app/com.company.appname-1
com.android.server.pm.PackageManagerException: 
Can't install because provider name 
com.google.android.gms.measurement.google_measurement_service 
(in package com.company.appname) is already used by
com.company.otherInstalledAppName

방법은 가 은 의 되어 있는지 입니다.Id가 의 안드로이드 섹션에 정의되어 있는지 확인하는 것입니다.build.gradle라이브러리를 사용하여 각 프로젝트별로 파일을 만듭니다.

android {
    defaultConfig.applicationId = "com.company.appname"
}

자세한 내용은 원본 버그 보고서에서 확인할 수 있습니다.이슈 784: 동일한 권한 제공자 이름을 사용하는 여러 앱

Facebook SDK를 사용하는 경우 Facebook 제공자에게 제공하는 "권한" 값에 문제가 있을 수 있습니다.

교체 -

<provider
        android:name="com.facebook.FacebookContentProvider"
        android:authorities="com.facebook.FacebookContentProvider"
        android:exported="true" />

WITH ->

<provider
        android:name="com.facebook.FacebookContentProvider"
        android:authorities="com.facebook.FacebookContentProvider[YOUR_APP_ID]"
        android:exported="true" />

를 할.defaultConfig.ApplicationId다른 답변에서도 제시된 바와 같이.

패키지 이름 변경 후에도 동일한 오류가 발생할 수 있습니다.에서 string.xml합니다 값을 합니다.android:authoritiesAndroid Manifest.xml 에서 시작합니다.

<provider
        android:authorities="@string/content_authority"
        android:name=".data.Provider"
        ... />

string.xml에서 값은 매니페스트에 선언된 패키지 이름과 같아야 합니다.

<string name="content_authority">com.whatever.android.sunshine.app</string>

기본적으로 제가 앱의 패키지 이름을 변경하려고 했을 때 저에게 이런 일이 있었습니다.

그래서 에뮬레이터에서는 이전에도 같은 앱이 설치되어 있었습니다.패키지 이름을 변경한 후 앱을 설치하려고 했을 때 디바이스에서 이미 오래된 애플리케이션에서 사용하고 있는 권한이라고 적혀있었습니다.

애플리케이션을 제거한 후 문제가 해결되었습니다.

your.package.name.UNIQUENAME;

예제:

  <provider
        android:name="com.aviary.android.feather.cds.AviaryCdsProvider"
        android:authorities="your.package.name.AviaryCdsProvider"
       />

나는 많은 해결책을 시도했지만 해결책을 찾지 못했습니다...하지만 이 링크가 도움이 됐어요문제에 대해 자세히 말씀드리고 싶은데요...

Instrumented 테스트 케이스를 실행하고 있어서 런처에서 앱이 보이지 않았습니다.설치되어 있고 따라서 동일한 컨텐츠 공급자를 사용하고 있습니다.그래서 어떻게든 제거를 해야겠죠. 그래서.Settings -> Application Manager -> All Downloaded Apps -> uninstall all apps from your current development package

자, 도망치려고 해봐요이게 효과가 있을 겁니다

매니페스트에 선언한 Authority + Provider 이름일 수 있습니다.

여러 어플리케이션에서 하나의 라이브러리를 사용했을 때도 비슷한 문제가 있었습니다.아래와 같은 정확한 공급자 선언으로 AndroidManifest.xml을 업데이트해야 했습니다.

<manifest ...>
    <application ...>
        <provider android:name="android.support.v4.content.FileProvider" android:authorities="${applicationId}.here.this.library.provider" android:exported="false" android:grantUriPermissions="true" tools:replace="android:authorities">
        </provider>
    </application>  
</manifest> 

아이콘을 '언인스톨'로 끌어 앱을 제거하면 문제가 해결될 줄 알았는데 해결되지 않았습니다.

문제를 해결한 내용은 다음과 같습니다.

  1. 설정으로 이동
  2. 앱 선택
  3. 앱을 찾아서 누르세요 (네, 여기서 찾아서 깜짝 놀랐어요!)
  4. 오른쪽 상단에 있는 점 3개를 누릅니다.
  5. "모든 사용자에 대한 제거"를 선택합니다.

다시 시도해 보십시오. 지금은 작동할 것입니다.

이 언급을 망치지 하세요, .applicationId인에android:authorities.

제 경우에는 오타를 내고 달러 표시를 생략했습니다.

android:authorities="{applicationId}.myprovider"

대신:

android:authorities="${applicationId}.myprovider"

유효한 권한 이름이므로 즉시 오류가 발생하지 않았습니다.하지만 며칠 후, 여러 가지 버전의 응용 프로그램을 설치하려고 했을 때, 오류 메시지가 콘텐츠 공급자의 무엇이 문제인지에 대한 정보를 많이 제공하지 않기 때문에 무엇이 문제인지 이해하는 것은 정말 힘든 일이었습니다.

이 문제를 해결하는 또 다른 방법은 병합된 매니페스트를 비교하여 동일한 권한을 찾는 것입니다.

Facebook 앱에서 합니다.AndroidManifest파일을 작성하고 당신의 것을 확인합니다.project Id합니다에 합니다.android:authorities

<provider android:name="com.facebook.FacebookContentProvider" android:authorities="com.facebook.app.FacebookContentProvider112623702612345" android:exported="true" />

이 문제가 발생했습니다.

해결 방법:

1 - AndroidManifest.xml 열기

2 - ctrl+f "provider" 찾기

3 - 공급자를 찾아 루트 디렉터리 이름을 업데이트합니다.

프로젝트를 실행합니다.문제가 해결되기를 바랍니다!

에뮬레이터를 사용하는 경우 다음을 시도해 볼 수 있습니다.아래 내용이 저에게 효과가 있었습니다.도구 --> AVD Manager --> (에뮬레이터 선택) --> 데이터 삭제로 이동합니다.오류가 사라졌습니다.

adb와 ./adb install -r abc.apk문제를 해결할 것입니다(장치가 더 높은 앱 버전을 가지고 있는 경우에도 덮어씁니다).

나는 이런 문제가 있었습니다.

Installation did not succeed.
The application could not be installed: INSTALL_FAILED_CONFLICTING_PROVIDER

매니페스트의 제공자로부터 온 것이 아닙니다. 아래 라이브러리는 제 앱에서 다른 앱과 충돌하여 다른 라이브러리를 설치할 수 없습니다.

implementation 'com.iceteck.silicompressorr:silicompressor:2.2.1'

AndroidmManifest.xml로 라이브러리를 구현할 때 이 오류가 발생했습니다.

<provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="library.path.provider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_paths"/>
    </provider>

Project AndroidManifest.xml(app/src/main)에 다음 코드를 넣었을 때 이 문제를 해결했습니다.

<provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="${applicationId}.provider"
        android:exported="false"
        android:grantUriPermissions="true"
        tools:replace="android:authorities">
    </provider>

네! 저도 ". 선생님이랑 똑같은 문제가 생겼어요. 말씀하신 대로 '변주'를 쓰시는 거죠."권한"을 고유하게 유지하면 다음과 같이 쓸 수 있습니다.

android:authorities="${applicationId}.provider"

앱에서 하나 이상의 lib 사용이 있다면,위와 같은 이유.

만약 당신이 Xamarin에 있는데 파이어베이스 때문에 이런 오류가 발생한다면요.충돌 사고):

INSTALL_FAILED_CONFLICTING_PROVIDER
Package couldn't be installed in [...]
Can't install because provider name dollar_openBracket_applicationId_closeBracket (in package [...]]) is already used by [...]

여기에 언급된 것처럼 Xamarin을 업데이트해야 합니다.빌드.다운로드:

  1. 자마린을 업데이트합니다.Build.Nuget Package를 0.4.12-preview3로 다운로드합니다.
    • Mac의 경우 Add Packages 창에서 Show pre-release packages를 선택해야 할 수 있습니다.
  2. 비주얼 스튜디오 닫기
  3. NuGet Packages의 캐시된 모든 위치 삭제:
    • Windows에서 Visual Studio를 열되 해결책은 없습니다.
      • 도구 -> 옵션 -> Nuget Package Manager -> 일반 -> 모든 Nuget 캐시 지우기
    • Mac에서는 다음 폴더를 지웁니다.
      • ~/.local/share/NuGet
      • ~/.nuget/packages
      • packages
  4. 솔루션에서 bin/obj 폴더 삭제
  5. 솔루션 로드
  6. 솔루션용 Nuget Packages 복원(자동 실행)
  7. 리빌드

앱을 실행한 후에 앱을 실행하는 장치에서 "com.example" 패키지 이름을 제거할 수 있습니다.이거 나한테 통했어요.

Android Manifest로 이동하여 이 코드로 붙여넣기 또는 바꾸기

<provider
        android:authorities="${applicationId}.here.this.library.provider"
        android:name="androidx.core.content.FileProvider"
        android:exported="false"
        android:grantUriPermissions="true"
        tools:replace="android:authorities" >

    </provider>

프로바이더를 사용하는 경우 다음 방법으로 확인하고 수행합니다.

        <provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="androidx.multidex.provider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_path" />
    </provider>

사용하거나

    <provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="${applicationId}.contentprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_path" />
    </provider>

또한 모바일 제거에서 응용프로그램이 이미 종료된 경우 확인합니다.

내 안드로이드 기기에는 같은 앱을 설치하는 다른 맛이 있었습니다.로 인해 오류가 발생합니다. 그래서 동일한 의 모든 맛을 제거하고 시도합니다.

adb install -r /Users/demo-debug-92acfc5.apk

제 문제를 해결해 줬습니다.

        need to use android:name="androidx.core.content.contentprovider 
        or android:name="androidx.core.content.provider insteadof 
        android:name="androidx.core.content.fileprovider

        <provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="${applicationId}.contentprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/filepaths" />
    </provider>

해결책1

에뮬레이터 대신 실제 장치에서 앱을 실행합니다.이 문제가 발생했는데 제 앱에 컨텐츠 공급자가 정의되어 있지 않습니다.

솔루션2

다른 경우에는 같은 applicationId와 일치하는 계측된 테스트 앱을 설치했습니다.

문제를 해결하기 위해 실행해야 했습니다. ./gradlew uA는 -u의 uninstallAll업.

또는 Gradle 패널을 사용하여 app\install\uninstallAll tasks로 이동을 선택할 수 있습니다.

에뮬레이터를 사용하면 데이터를 삭제할 수 있습니다.

시청자 네트워크 컨텐츠 공급자를 사용하는 경우 앱 AndroidManifest.xml에서 이 코드를 추가해야 합니다.

<provider
        android:name="com.facebook.FacebookContentProvider"
        android:authorities="com.facebook.app.FacebookContentProvider165632208074623"
        android:exported="true" />

페이스북 앱 ---> 165632208074623

앱 로그인을 위해 페이스북만 사용해야 하는 경우 여기에 팁이 있습니다. (코르도바 프로젝트에서 작동한 이 수정 사항) 문제를 해결하려면 1단계와 2단계를 완료해야 합니다.

1. 해당 파일 안에서 platform/android/ android.json 파일을 찾습니다. 다음 코드를 제거:

,{"xml": "<provider android:authorities=\"com.facebook.app.FacebookContentProvider<FACEBOOK_APP_ID>\" android:exported=\"true\" android:name=\"com.facebook.FacebookContentProvider\" />","count": 1
}

그런 다음 platforms/android/app/src/main/android Manifest.xml 파일을 찾습니다.

다음 코드를 제거합니다.

        <provider android:authorities="com.facebook.app.FacebookContentProvider<FACEBOOK_APP_ID>" android:exported="true" android:name="com.facebook.FacebookContentProvider" />

이제 응용프로그램을 잘 실행할 수 있습니다.이 답변이 OP와 관련이 없다면 죄송하지만, 이 문제를 가지고 있는 다른 많은 사람들에게 도움이 될 것입니다.저는 이 정확한 답을 어디에서도 찾을 수 없었습니다.

여러 가지 해결책을 시도했지만 해결책을 찾지 못했습니다.안드로이드 매니페스트에서 바꿨습니다.

<provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="com.com.shareFile"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths" />
  </provider>

@Jose Lugia가 말한 대로 당국을 바꾸십시오.

(메니페스트(Merge Manifest)에서 제공자를 찾을 수 있습니다.)

대부분 당신이 구현한 SDK에 연결될 것이므로 SDK 구현 라인을 제거하고 그라들을 동기화한 후 다시 구현 라인을 추가하고 그라들을 동기화합니다.

구현 라인:implementation files(<your SDK>)

공급자 코드: (Merge-manifest에서 스크롤을 내려야 찾을 수 있습니다.)

언급URL : https://stackoverflow.com/questions/16267785/install-shows-error-in-console-install-failed-conflicting-provider

반응형