[Android] 該文件包與具有同一名稱的現有文件包存在沖突

2017年9月1日 星期三


問題描述:

Android安裝 APK , 手機報錯 :"該文件包與具有同一名稱的現有文件包存在沖突" (如圖1)

圖1

通過AndroidStudio安裝,LOG顯示的無法安裝的錯誤信息:(如圖2)

Package couldn't be installed in /data/app/com.xxx:
Can't install because provider name com.xxx.provider is already used by com.yyy
圖2

問題解決:

INSTALL FAILED CONFLICTING PROVIDER,
這個問題其實本質就是手機里已經安裝有同名的Provider的APK了.

比如我在甲APP(com.xxx)中的AndroidManifest.xml中定義了一個Provider,
安裝完這個甲APP,
我把代碼里的ApplicationId改成com.yyy,即換皮成乙APP(com.yyy) ,
此時如果沒有把Providerandroid:authorities的屬性也換掉,
安裝乙APP到手機上,provider就會和甲APP的沖突.

<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="com.xxx.fileprovider"    <!--問題所在,Provider的名字忘記換了-->
    android:grantUriPermissions="true"
    android:exported="false">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>

所以最好使用如下寫法

${applicationId}.provider

避免換皮的時候,忘記把Provider的值換掉.


參考文章
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,581評論 25 708
  • 背景 為啥突然想到去寫這個問題?1、在適配Android7.0時,大家都會用到FileProvider去封裝文件原...
    sunnyxibei閱讀 2,233評論 0 1
  • Gradle對于很多開發者來說有一種既熟悉又陌生的感覺,他是離我們那么近,以至于我每天做項目都需要他,但是他又是離...
    阿_希爸閱讀 9,606評論 10 199
  • 一朵祥云兀自來,黑山爐下久徘徊。 流連忘返觀光客,氣定神閑圣境材。
    不惑而歌閱讀 926評論 7 22
  • 做“對的事”,才會越來越輕松,越干越自信。那些“努力堅持吧,會有好日子的”都是騙人的謊言。和“對的人”一起共事,會...
    88蘭貓閱讀 584評論 0 1