[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阅读 175,277评论 25 709
  • 背景 为啥突然想到去写这个问题?1、在适配Android7.0时,大家都会用到FileProvider去封装文件原...
    sunnyxibei阅读 6,575评论 0 1
  • Gradle对于很多开发者来说有一种既熟悉又陌生的感觉,他是离我们那么近,以至于我每天做项目都需要他,但是他又是离...
    阿_希爸阅读 13,175评论 10 199
  • 一朵祥云兀自来,黑山炉下久徘徊。 流连忘返观光客,气定神闲圣境材。
    不惑而歌阅读 4,415评论 7 22
  • 做“对的事”,才会越来越轻松,越干越自信。那些“努力坚持吧,会有好日子的”都是骗人的谎言。和“对的人”一起共事,会...
    88兰猫阅读 3,633评论 0 1