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
) ,
此時如果沒有把Provider
的android: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
的值換掉.